mysqli assoc php,关于php:mysqli_fetch_assoc()期望参数1为mysqli_result,给定布尔值

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:

PHP: Warning: sort() expects parameter 1 to be array, resource given

我是PHP和MySQL的新手,我只是想不出这个。 我在论坛周围搜索过但没有找到我能理解的答案。 我最初使用的是mysql_fetch_assoc(),但我只能搜索数字,并且在搜索字母时也收到了错误。 我希望我在这里走在正确的轨道上。 提前感谢您的帮助!

$con = mysqli_connect($hostname,$username,$password) or die ("

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"];

}

不要忘记过滤$_GET['part']以防止SQL注入。

当您的结果不是结果时(而不是"假"),会发生这种情况。

你应该改变这一行

$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.';

这是因为字符串需要像上面一样进行转义。 我只是改进了我的答案。

"当你的结果不是结果时(而不是"假")会发生这种情况。" 这真的帮我调试了几秒钟。

mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given

这意味着您传递的第一个参数是布尔值(true或false)。

第一个参数是$result,它是false,因为查询中存在语法错误。

" ... WHERE PartNumber = $partid';"

您永远不应该在SQL查询中直接包含请求变量,否则用户可以在查询中注入SQL。 (参见SQL注入。)

你应该转义变量:

" ... WHERE PartNumber = '" . mysqli_escape_string($conn,$partid) ."';"

或者更好,使用Prepared Statements。

macaerospace.info/inventory/test?part=1在搜索数字时工作正常 macaerospace.info/inventory/test?part=PN123不起作用并给我布尔错误 另外,插入转义字符串时收到T-VARIABLE错误。 安全对我来说不是一个大问题,因为我只是想让它首先发挥作用

您是单引用您的SQL语句,它使变量文本而不是变量。

$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("

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"];

}

如果您有任何问题,请告诉我,我无法测试此代码,因此您可能需要检查它!

您的SQL查询无效。 您可以NOT在单引号字符串中使用变量

如果$usertable不是有效表或不包含列PartNumber或部分不是数字,代码中会发生什么。

你必须转义$ partid并读取mysql_fetch_assoc()的文档,因为它可以返回一个布尔值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值