PHP CRUD'where子句'中的未知列

时间:2013-05-20 03:16:22

标签: php mysqli crud

我正在创建一个CRUD页面。我已经能够使用以下代码将数据插入到我的数据库中:

    $query="INSERT INTO user(USER_ID, PASSWORD, FIRST_NAME, LAST_NAME, CONTACT_NO, SHIPPING_ADDRESS, BILLING_ADDRESS, EMAIL) VALUES('$user_id', '$password', '$first_name', '$last_name', '$contact_no', '$shipping_address', '$billing_address', '$email')";
if(mysqli_query($con, $query))
{
echo "<center><font color=#FF0000>Record Inserted!</font></center><br>";
}
else{printf("error: %s\n", mysqli_error($con));}
    }
}

但是,我无法删除或编辑数据,因为“where子句中的未知列”会出现错误。我试图在谷歌上寻找解决方案,但他们没有工作。有人可以帮忙看看我的代码中是否有任何错误?

以下代码用于编辑数据库中的数据:

$query="UPDATE user SET USER_ID='$user_id' , PASSWORD='$password', FIRST_NAME='$first_name', LAST_NAME='$last_name', CONTACT_NO='$contact_no', SHIPPING_ADDRESS='$shipping_address', BILLING_ADDRESS='$billing_address', EMAIL='$email' WHERE USER_ID=".$_POST['user_id'];
if(mysqli_query($con, $query))
{
    echo "<center><font color=#FF0000>Record Updated!</font></center><br>";
}
else{printf("error: %s\n", mysqli_error($con));}
}

以下代码用于删除数据库中的数据:

    if(isset($_GET['operation'])){
    if($_GET['operation']=="delete")
    {
        $query="DELETE FROM user WHERE USER_ID=".$_GET['user_id'];  
        if(mysqli_query($con, $query))
        {
            echo "<center><font color=#FF0000>Record Deleted!</font></center><br>";
        }
        else{printf("error: %s\n", mysqli_error($con));}
    }
}

2 个答案:

答案 0 :(得分:4)

我猜您的user_id coulmn类型为varchar,因此您的查询字符串会抛出UPDATE ... WHERE user_id=id1;之类的结果,然后Mysql会认为id1是一列并抛出{{1} }}。所以最好在你的代码中使用这样的引用 unknown column

答案 1 :(得分:1)

首先,这是您在使用mysqli

时更新数据的方式
$stmt = $mysqli->prepare("UPDATE name SET firstname = ?, 
   lastname= ?,  
   WHERE id = ?");

$stmt->bind_param('id',
   $_POST['firstname'],
   $_POST['lastname']);
$stmt->execute(); 
$stmt->close();

这就是为什么要构建mysqli查询,以获得更好的性能和安全性。 所以,最好重新学习一下你对mysqli的了解

现在,就您的代码而言(请参阅上述问题):

问题似乎在这里WHERE USER_ID=".$_POST['user_id'];

您使用"UPDATE user SET USER_ID='$user_id',开始查询,因此如果您从双"引号开始,则必须维护并注意您的引号序列,您必须以相同的方式结束,并在;分号处包含WHERE USER_ID='.$_POST['user_id'].'";分号。端。

因此,我们将您的上一个代码更改为"UPDATE user SET USER_ID='$user_id' , PASSWORD='$password', FIRST_NAME='$first_name', LAST_NAME='$last_name', CONTACT_NO='$contact_no', SHIPPING_ADDRESS='$shipping_address', BILLING_ADDRESS='$billing_address', EMAIL='$email' WHERE USER_ID=".$_POST['user_id'];

所以,替换它

"UPDATE user SET USER_ID='$user_id' , PASSWORD='$password', FIRST_NAME='$first_name', LAST_NAME='$last_name', CONTACT_NO='$contact_no', SHIPPING_ADDRESS='$shipping_address', BILLING_ADDRESS='$billing_address', EMAIL='$email' WHERE USER_ID='.$_POST['user_id'].'";

{{1}}