我有一个获取id号的PHP代码,然后检查数据库中是否存在id。如果id在数据库中,则回显Item Added
如果不是,则回显That id is not valid
(至少那是应该做的!)
现在它无论如何都会回复Item Added
。
$action = $_GET['action'];
$id = $_GET['id'];
if ($action == 'add') {
// Check if the id matches one in the database
$result = mysqli_query($con,"SELECT COUNT(*) FROM items WHERE id='$id'");
if ($result = 0) {
echo 'That id is not valid!';
}
else {
echo 'Item Added';
}
}
我的获取操作的网址如下所示:
../shopping-functions.php?action=add&id=977
答案 0 :(得分:4)
=
是作业
==
是比较。
变化:
if ($result = 0) {
到
if ($result == 0) {
更新
您还需要正确检索查询中的行数,例如:
$result = mysqli_query($con,"SELECT * FROM items WHERE id='$id'");
$row_cnt = mysqli_num_rows($result);
if ($row_cnt == 0) {
答案 1 :(得分:2)
正如其他人所指出的那样,您使用的是赋值运算符而不是if语句中的比较 - 即您使用=
代替==
。不幸的是,这不是唯一的错误。
mysqli_query
返回一个MySQL资源,因此将其与0进行比较将不成立,除非查询实际失败。相反,您需要查看您获得的资源对象的实际结果数据。一个更简单的解决方案是:
if ($action == 'add') {
// Check if the id matches one in the database
$result = mysqli_query($con,"SELECT id FROM items WHERE id='$id'");
if (mysql_num_rows($result) == 0) {
echo 'That id is not valid!';
}
else {
echo 'Item Added';
}
}
因此,不是选择具有特定ID的条目数,而是选择id本身(如果存在),然后计算您得到的结果。
在一个不相关的说明中:您的代码也可以通过MySQL注入,而您应该使用预准备语句。
答案 2 :(得分:1)
您可以使用:
$action = $_GET['action'];
$id = $_GET['id'];
if($action == 'add') {
// Check if the id matches one in the database
$result = mysqli_query($con,"SELECT COUNT(*) FROM `items` WHERE `id`='$id'");
$row = $result->fetch_row();
if($row[0] == 0) {
echo 'That id is not valid!';
}
else {
echo 'Item Added';
}
}
之前你用mysql资源检查它,这是错误的。你也使用赋值运算符(=)而不是比较运算符(==),就像每个人都说的那样。
答案 3 :(得分:0)
if ($result = 0) {
echo 'That id is not valid!';
}
正在分配结果,您需要使用if($result == 0)
答案 4 :(得分:0)