2012-03-09 9 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

+0

また、SQLインジェクション攻撃に関するセクションにも注意してください。 –

+0

isset()を調べるhttp://php.net/manual/en/function.isset.php –

答えて

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についての基本的なチュートリアルを読んでください。

関連する問題