-1

以下は、mysqlクエリでいくつかのエラーを示す私のコードです:

<?php
$con=mysql_connect('localhost','root','');
$str=$_GET["message"];
$stor=explode(" ",$str);// converting message into array
mysql_select_db('words',$con);
for($j=0;$j<=30; $j++)
{
mysql_query($con,"UPDATE blacklist SET $stor=1 where $stor=0");//if column name=element in array then make it as 1 in database
}
mysql_close($con);
?>
4

2 に答える 2

1
  1. あなたのコードはSQL インジェクションに対して脆弱です。準備済みステートメントを読み、PDO/MySQLiを使用します。
  2. $stor は配列オブジェクトであり、クエリで直接使用することはできません。使いたい方は使ってみてください

IN('.implode(",", $stor).')

上記のコードは次のことを行います。

implode() - 配列を受け取り、それをカンマ区切りの文字列に変換します。

IN() - 指定されたカンマ区切りの値を比較し、少なくとも 1 つ存在する場合は true を返します。

例 (内破):

implode(",", array(1,2,3)) は "1,2,3" に等しい

例 (IN):

TestID IN (1,2,3) は同じです (TestID = 1 または TestID = 2 または TestID = 3)

于 2013-03-15T15:49:09.943 に答える
0

クエリが次のようになるため、おそらく mysql エラーが発生しています。

UPDATE blacklist SET Array=1 where Array=0;

完全な配列をエコーアウトするだけの場合は、Array代わりに、配列要素を指定する必要があります ($stor[1]たとえば)。

やりたいことは、for ループを foreach に置き換えて、一度に 1 つずつ要素を捨てることができるようにすることです。

また、あなたの主張は逆です。

foreach($stor as $word)
{
  mysql_query("UPDATE blacklist SET $word=1 where $word=0", $con);
}
于 2013-03-15T15:47:52.827 に答える