2012-03-09 65 views
-1

如果用户创建组并且该组不存在,则创建该组;但如果它已经存在,发送消息说这样。检查现有记录 - 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

你应该从头开始读一PHP/MySQL的教程。 – kba 2012-03-09 06:45:35

+0

并密切关注有关SQL注入攻击的部分。 – 2012-03-09 06:48:37

+0

调查isset()http://php.net/manual/en/function.isset.php – 2012-03-09 06:49:12

回答

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 
} 
0
if("SELECT * FROM groups WHERE name!=('$_POST[name]')") 

你创建一个if语句来检查,如果你的字符串是真实的。对于上述情况,它永远是真实的。我假设你真正想把这个字符串作为查询发送到你的数据库,在这种情况下,你应该使用mysql_query()作为你以后在你的代码中。

但是另一方面,即使它被执行,该查询也没有意义。它从名称不是$_POST[name]的数据库的每一行中选择(如果它不是针对包含括号的明显语法错误)。

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

在这里,你插入值到你的数据库,实际上工作正常,除非你完全容易受到SQL注入。

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