检查现有记录 - PHP

时间:2012-03-09 06:43:19

标签: 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");

    }

?>

2 个答案:

答案 0 :(得分:1)

您可以使用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
}

答案 1 :(得分:0)

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的基础教程。