mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
PHP: Warning: sort() expects parameter 1 to be array, resource given
我是PHP和MySQL的新手,我只是想不出这个。 我在论坛周围搜索过但没有找到我能理解的答案。 我最初使用的是mysql_fetch_assoc(),但我只能搜索数字,并且在搜索字母时也收到了错误。 我希望我在这里走在正确的轨道上。 提前感谢您的帮助!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $con = mysqli_connect($hostname,$username,$password) or die ("<script language='javascript'>alert('Unable to connect to database')"); mysqli_select_db($con, $dbname); if (isset($_GET['part'])){ $partid = $_GET['part']; $sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid'; $result = mysqli_query($con, $sql); $row = mysqli_fetch_assoc($result); $partnumber = $partid; $nsn = $row["NSN"]; $description = $row["Description"]; $quantity = $row["Quantity"]; $condition = $row["Conditio"]; } |
当您的结果不是结果时(而不是"假"),会发生这种情况。
你应该改变这一行
1 | $sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid'; |
对此:
1 | $sql ="SELECT * FROM $usertable WHERE PartNumber = $partid"; |
因为"可以解释$变量,而'不能。
适用于整数(数字),对于需要将$变量放在单引号中的字符串,例如
1 | $sql ="SELECT * FROM $usertable WHERE PartNumber = '$partid'"; |
如果你想/必须使用单引号,那么php无法解释变量,你必须这样做:
1 | $sql = 'SELECT * FROM '.$usertable.' WHERE string_column ="'.$string.'" AND integer_column = '.$number.'; |
1 |
这意味着您传递的第一个参数是布尔值(true或false)。
第一个参数是
1 | " ... WHERE PartNumber = $partid';" |
您永远不应该在SQL查询中直接包含请求变量,否则用户可以在查询中注入SQL。 (参见SQL注入。)
你应该转义变量:
1 |
或者更好,使用
您是单引用您的SQL语句,它使变量文本而不是变量。
1 2 3 | $sql ="SELECT * FROM $usertable WHERE PartNumber = $partid"; |
Mysqli使用面向对象的编程。请尝试使用此方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function dbCon() { if($mysqli = new mysqli('$hostname','$username','$password','$databasename')) return $mysqli; else return false; } if(!dbCon()) exit("<script language='javascript'>alert('Unable to connect to database')"); else $con=dbCon(); if (isset($_GET['part'])){ $partid = $_GET['part']; $sql ="SELECT * FROM $usertable WHERE PartNumber = $partid"; $result=$con->query($sql_query); $row = $result->fetch_assoc(); $partnumber = $partid; $nsn = $row["NSN"]; $description = $row["Description"]; $quantity = $row["Quantity"]; $condition = $row["Conditio"]; } |
如果您有任何问题,请告诉我,我无法测试此代码,因此您可能需要检查它!
如果
你必须转义$ partid并读取mysql_fetch_assoc()的文档,因为它可以返回一个布尔值