我正在向此代码发送帖子请求:
$name = (string)$_POST['name'];
$id = (int)$_POST['id'];
$query = "INSERT INTO Users (name, userID) VALUES ('$name', '$id')";
$result = mysqli_query($link,$query);
哪个工作正常,它会在表格中添加一行。我如何检查以下其中一行中是否存在所有准备好的用户ID?
答案 0 :(得分:1)
这样做
$query = "SELECT COUNT(*) FROM Users WHERE userID = '$id'";
$result = mysqli_query($link,$query);
if ( mysqli_fetch_assoc($result) ) {
$message = "Already exists";
} else {
$query = "INSERT INTO Users (name, userID) VALUES ('$name', '$id')";
$result = mysqli_query($link,$query);
}
答案 1 :(得分:1)
试试这个
$name = (string)$_POST['name'];
$id = (int)$_POST['id'];
$res = mysqli_query($link, "SELECT * FROM Users WHERE userID = '$id' LIMIT 1 ");
if($row = mysqli_fetch_assoc($res))
{
echo "this user id is already exists";
}
else
{
$query = "INSERT INTO Users (name, userID) VALUES ('$name', '$id')";
$result = mysqli_query($link,$query);
echo "record inserted successfully ";
}
记住:在您尝试获得一个结果时始终使用LIMIT 1
。
答案 2 :(得分:0)
如果您已在表中正确设置“id”作为主键或唯一键,则可以在查询中使用修饰符IGNORE,当您尝试重复使用时,不会出现错误。 如果主键的值不在表中,则执行此操作将导致仅插入行。
$query = "INSERT IGNORE INTO Users (name, userID) VALUES ('$name', '$id')";
如果您未在表中设置主键,则必须执行SELECT查询以查明具有该ID的行是否已存在于您的表中。
答案 3 :(得分:0)
使UserID成为唯一键。 如果它已经存在,那么您的代码将抛出错误,并且不会插入该行。
alter table Users
add unique index Unique_user (userID (8000))
答案 4 :(得分:0)
在将值插入表之前,请检查表中是否存在以下用户ID
你可以这样做
$name = $_POST['name'];
$id = $_POST['id'];
$sql = "SELECT * FROM Users WHERE userID = '$id'";
$res= mysqli_query($sql);
$num = mysqli_num_rows($res);
if($num == 0)
{
$query2 = "INSERT INTO Users (name, userID) VALUES ('$name', '$id')";
$result2 = mysqli_query($query2);
echo "record inserted successfully ";
}
else
{
echo "Record Failed !!";
}