可能重复:
PHP: Warning: sort() expects parameter 1 to be array, resource given
我是PHP和MySQL的新手,我只是想不出这个。我在论坛周围搜索过但没有找到我能理解的答案。我最初使用的是mysql_fetch_assoc(),但我只能搜索数字,并且在搜索字母时也收到了错误。我希望我在这里走在正确的轨道上。提前感谢您的帮助!
$con = mysqli_connect($hostname,$username,$password) or die ("<script language='javascript'>alert('Unable to connect to database')</script>");
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"];
}
答案 0 :(得分:24)
如果您的结果不是结果(而是“假”),则会发生这种情况。 你应该改变这一行
$sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid';
到此:
$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";
因为“可以解释$变量而'不能。
对于整数(数字)工作正常,对于需要将$变量放在单引号中的字符串,例如
$sql = "SELECT * FROM $usertable WHERE PartNumber = '$partid' ";
如果你想/必须使用单引号,那么php无法解释变量,你必须这样做:
$sql = 'SELECT * FROM '.$usertable.' WHERE string_column = "'.$string.'" AND integer_column = '.$number.';
答案 1 :(得分:14)
mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
这意味着您传递的第一个参数是布尔值(true或false)。
第一个参数是$result
,它是false
,因为查询中存在语法错误。
" ... WHERE PartNumber = $partid';"
您永远不应该在SQL查询中直接包含请求变量,否则用户可以在查询中注入SQL。 (见SQL injection。)
你应该转义变量:
" ... WHERE PartNumber = '" . mysqli_escape_string($conn,$partid) . "';"
或者更好的是,使用Prepared Statements
。
答案 2 :(得分:4)
你是单引用你的SQL语句,它使变量成为文本而不是变量。
$sql = "SELECT *
FROM $usertable
WHERE PartNumber = $partid";
答案 3 :(得分:2)
Mysqli使用面向对象的编程。请尝试使用此方法:
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')</script>");
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"];
}
如果您有任何问题,请告诉我,我无法测试此代码,因此您可能需要检查它!
答案 4 :(得分:0)
如果$usertable
不是有效表格或不包含列PartNumber或部分不是数字,代码中会发生什么。
你必须转义$ partid并读取mysql_fetch_assoc()的文档,因为它可以返回一个布尔值