这是我在php中使用的错误的mysql查询吗?
$tablenamep = $_POST["tablenamep"];
$res = mysqli_query($con, "SELECT * FROM `$tablenamep` WHERE number=9");
所以当我尝试使用:
获取结果时while ($row = mysqli_fetch_assoc($res))
有一个sql注入错误: mysqli_fetch_assoc()期望参数1为mysqli_result,布尔值为
我已经阅读了有关此错误的几个问题和答案,但我的问题是为什么查询返回一个布尔值,当我甚至为$ tablenamep变量添加了一个值。我使用以下代码从我的Android应用程序中将值添加到变量中:
nameValuePairs.add(new BasicNameValuePair("tablenamep", msg));
代码正在运行且没有任何错误,但是当我尝试获取php的结果时,我的Android应用程序崩溃了。我该怎么解决这个问题! (注意:我的Android应用程序没有任何问题,我已经彻底检查了它)
为什么这是一个糟糕的查询?我可以做什么让Query不返回布尔值,并返回实际值?
答案 0 :(得分:0)
您会发现自己的查询失败了
在
下插入代码if($result === FALSE) {
die(mysql_error());
}
就在这一行之上
while ($row = mysqli_fetch_assoc($res))
你会发现它死在那里的剧本。
可能是您发布的值存在问题 - 回显您的发布值并查看其是否包含'
或"
等等。
答案 1 :(得分:0)
我想你的$res = mysqli_query($con, "SELECT * FROM
$ tablenamep WHERE number=9");
退货失败。
正如技术细节表
中所说的那样here对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询 返回一个mysqli_result对象。对于其他成功的查询,它会 返回TRUE。失败时错误
mysqli_fetch_assoc()函数需要mysqli_result但是查询失败了,为什么它返回boolean而不是object。