mysqli_fetch_assoc()期望参数1是mysqli_result,布尔给定
可能重复:
PHP:警告:sort()期望参数1是数组,给定的资源
我对PHP和MySQL相当陌生,我只是无法弄清楚这一点。 我已经search了所有的论坛,但还没有find我可以理解的答案。 我最初使用的是mysql_fetch_assoc(),但是我只能search数字,而且在search字母时也收到了错误。 我希望我能在这里find正确的方向。 预先感谢您的帮助!
$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"]; }
当你的结果不是一个结果(而是一个“假”)时,会发生这种情况。 你应该改变这一行
$sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid';
对此:
$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";
因为“可以解释$variables”而不能。
可以用整数(数字)正常工作,对于需要将$variables放在单引号中的string,比如
$sql = "SELECT * FROM $usertable WHERE PartNumber = '$partid' ";
如果你想/必须使用单引号,那么php不能解释variables,你将不得不这样做:
$sql = 'SELECT * FROM '.$usertable.' WHERE string_column = "'.$string.'" AND integer_column = '.$number.';
mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
这意味着你传递的第一个参数是一个布尔值(true或false)。
第一个参数是$result
,它是false
因为查询中有语法错误。
" ... WHERE PartNumber = $partid';"
您不应该直接在SQL查询中包含请求variables,否则用户可以在查询中注入SQL。 (请参阅SQL注入 。)
你应该逃避variables:
" ... WHERE PartNumber = '" . mysqli_escape_string($partid) . "';"
或者更好的是,使用Prepared Statements
。
你是单引号你的SQL语句是使variables文本,而不是variables。
$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";
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"]; }
让我知道如果您有任何问题,我无法testing这个代码,所以你可能需要tripple检查它!
如果$usertable
不是有效的表格,或者不包含列PartNumber或part不是一个数字,代码中会发生什么情况。
您必须转义$ partid,并且还要读取mysql_fetch_assoc()的文档,因为它可以返回布尔值