2012-01-20 5 views
0

私は非常に単純なテーブルを持っています - 3列ID | UID | CATテーブルから削除するUID = x AND CAT = y

私はUID = somethingとCAT = somethingの両方の行を削除するためにmysql deleteを実行しようとしています。しかし、それは動作しません。これはどうすればいいですか?

$uid = $_POST['UID']; 
$cat = $_POST['CAT']; 

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT=".$cat.""); 
+3

をチェックする別のフォームをエスケープする必要があります。パラメータを正しくサニタイズするようにしてください。これを行う最善の方法は、PDOまたはMySQLiとPrepared Statementsを使用することです。 – TimWolla

+2

etherまたは両方の列(UID、CAT)はVARCHAR/CHAR列ですか? – Mithrandir

+0

組み込みクエリとPHPMyAdminなどをエコーし​​て一致するデータセットがあることを確認しましたか? – TimWolla

答えて

2

これを試してみてください。

mysql_query("DELETE FROM Categories WHERE UID = $uid AND CAT='$cat'"); 
+0

uidは整数なので、本当に ''の中に入れるべきですか? – dgw

+0

いいえ、数字の場合は引用符で囲む必要はありません。 – Arian

+0

OPはカラムuidの型がintegerなので、投稿を編集してください。 – dgw

0

あなたはアクティブなデータベース接続を持っていますか?そうでない場合は、mysql_query()を呼び出す前に作成する必要があります。それ以外

は、クエリで単一引用符を忘れることがあります。

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT=".$cat.""); 

は次のようになります。

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT='".$cat."'"); 

CATが数値列ではありませんと仮定します。

+0

はいスクリプトの前にDB接続があります。どの提案もうまくいきませんでした。私はUID =どこでそれをすることができますが、ANDをやろうとするとできません。 UIDはINTで、CATはVARCHARです。 –

+0

@JamesAckerman:提案したように、一重引用符をクエリに追加しましたか? '$ cat'のデータにも一重引用符がありますか?そうであれば、クエリが中断されます。また、クエリはSQLインジェクションに対して脆弱であることに注意してください。 – FtDRbwLXw6

+0

OK - これは機能します。ありがとう。 –

2
$uid = $_POST['UID']; 
$cat = $_POST['CAT']; 

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT=".$cat.""); 

VARCHARは

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT='".$cat."'"); 

別のヒント使用mysql_real_escape_stringのか、あなたのスクリプトは、SQL-注射しやすいユーザー入力に

$uid = mysql_real_escape_string($_POST['UID']); 
$cat = mysql_real_escape_string($_POST['CAT']); 
+1

+1はmysql_real_escape_stringです。 – ComFreek

関連する問題