检查现有记录-PHP


Check for an existing record - PHP

如果用户创建了一个组,但该组不存在,则创建该组;但如果它已经存在,发送一条消息这样说。

这是我的密码。它插入到我的数据库中,但无法检查组是否已经存在。

<?php
    mysql_connect('localhost','root','');
    mysql_select_db('test');
    $result = mysql_query('SELECT * FROM groups WHERE name!="'.misc::escape($_POST['name']).'"');
    if(mysql_num_rows($result) == 0)
    {
       $sql="INSERT INTO groups(name) VALUES ('$_POST[name]')";
       mysql_query($sql);
       $select_result=mysql_query("SELECT * FROM groups WHERE name='$_POST[name]' ");
       $row = mysql_fetch_assoc($select_result);
       echo($row['id']);
    }
    else
    {
      echo("this group exist");
    }
?>

您可以使用mysql_num_rows来计算查询返回的行数:

$result = mysql_query("SELECT * FROM groups WHERE name != '$_POST[name]'");
if (mysql_num_rows($result) == 0)
{
     // create new group
}
else
{
     // print an error
}
if("SELECT * FROM groups WHERE name!=('$_POST[name]')")

您正在创建一个if语句,用于检查您的字符串是否为true。对于上述情况,它将永远是正确的。我假设您真正想要的是将该字符串作为查询发送到您的数据库,在这种情况下,您应该在稍后的代码中使用mysql_query()

但另一方面,即使执行了该查询,该查询也毫无意义。它从数据库中选择名称不是$_POST[name]的每一行(如果不是因为涉及括号的明显语法错误)。

$sql="INSERT INTO groups(name) VALUES ('$_POST[name]')";
mysql_query($sql);

在这里,您将值插入到数据库中,这实际上可以正常工作,只是您完全容易受到SQL注入的攻击。

所以总结一下:去阅读关于PHP和MySQL的基本教程