如果表中不存在userID,则添加mysql行

时间:2014-01-30 09:30:06

标签: php mysql sql

我正在向此代码发送帖子请求:

$name = (string)$_POST['name'];
$id = (int)$_POST['id'];

$query = "INSERT INTO Users (name, userID) VALUES ('$name', '$id')";


$result = mysqli_query($link,$query);

哪个工作正常,它会在表格中添加一行。我如何检查以下其中一行中是否存在所有准备好的用户ID?

5 个答案:

答案 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 !!";
  }