无语的出错,mysql_fetch_array()
程序员文章站
2024-01-22 13:59:34
...
MySQL PHP 数据库连接 查询 代码如下,求帮忙看一下吧!
调用如下:
执行结果如下:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\qjcentury\conn.php on line 45
第45行代码在上面用红色标注了
因为 mysql_query($sql,$this->conn) or die(mysql_error()."
SQL执行出错:$sql")
是一个逻辑表达式,直接返回的话只能是逻辑值。
所以要写作
$rs = mysql_query($sql,$this->conn) or die(mysql_error()."
SQL执行出错:$sql");
因为 = 的优先级高于 or 所以 $rs = mysql_query($sql,$this->conn) 被先执行
算式变为
$rs or die(mysql_error()."
SQL执行出错:$sql");
当然还是逻辑表达式啦,但其结果被抛弃了
getConn(); } public function getConn(){ $db = require_once 'config/config.php'; $this->dbhost = $db['dbhost']; $this->dbuser = $db['dbuser']; $this->dbpsw = $db['dbpsw']; $this->dbchar = $db['dbchar']; $this->dbname = $db['dbname']; $this->tablepre = $db['tablepre']; $this->conn = mysql_connect($this->dbhost,$this->dbuser,$this->dbpsw) or die(mysql_error()."
Mysql连接失败!"); mysql_select_db($this->dbname,$this->conn) or die(mysql_error()."
数据库访问出错"); mysql_query("set names ".$this->dbchar,$this->conn); } /** * 执行sql */ public function query($sql){ return mysql_query($sql,$this->conn) or die(mysql_error()."
SQL执行出错:$sql"); } /** * 返回多条记录 */ public function getDataArrays($sql,$type = MYSQL_BOTH){ $result = $this->query($sql); $refArr = array(); while ($row = mysql_fetch_array($result,$type)){ $refArr[] = $row; } return $refArr; } /** * 关闭数据库链接 */ public function closeConn(){ mysql_close($this->conn); }}
调用如下:
$conn = new Conn();$sql = "select * from qj_content";$contentList = $conn->getDataArrays($sql,MYSQL_ASSOC);$conn->closeConn();
执行结果如下:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\qjcentury\conn.php on line 45
第45行代码在上面用红色标注了
回复讨论(解决方案)
那块用红色标注的被弄成php代码了,我晕
是/**
* 返回多条记录
*/
public function getDataArrays($sql,$type = MYSQL_BOTH){
$result = $this->query($sql);
$refArr = array();
while ($row = mysql_fetch_array($result,$type)){
$refArr[] = $row;
}
return $refArr;
}
怎么都没有人来?
几次提问 不论简单还是困难都没有人来帮帮解答一下,
CSDN什么时候变得这么冷清了?
估计sql 出问题了
在while 上 echo mysql_error(); 看看
LZ看看W3C上面的例子吧
语法
mysql_fetch_array(data,array_type)
参数 描述
data 可选。规定要使用的数据指针。该数据指针是 mysql_query() 函数产生的结果。
array_type
可选。规定返回哪种结果。可能的值:
MYSQL_ASSOC - 关联数组
MYSQL_NUM - 数字数组
MYSQL_BOTH - 默认。同时产生关联和数字数组
query 方法改成这样
public function query($sql){ $rs = mysql_query($sql,$this->conn) or die(mysql_error()."
SQL执行出错:$sql"); return $rs; }
因为 mysql_query($sql,$this->conn) or die(mysql_error()."
SQL执行出错:$sql")
是一个逻辑表达式,直接返回的话只能是逻辑值。
所以要写作
$rs = mysql_query($sql,$this->conn) or die(mysql_error()."
SQL执行出错:$sql");
因为 = 的优先级高于 or 所以 $rs = mysql_query($sql,$this->conn) 被先执行
算式变为
$rs or die(mysql_error()."
SQL执行出错:$sql");
当然还是逻辑表达式啦,但其结果被抛弃了