如何将输入数组与mysql列进行比较?

时间:2013-03-15 15:43:49

标签: php html mysql

以下是我的代码在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);
?>

2 个答案:

答案 0 :(得分:1)

  1. 您的代码容易受到 SQL注入的攻击。阅读准备好的陈述并使用 PDO / MySQLi
  2. $ stor是一个数组对象,无法直接在查询中使用。如果您想使用它,请尝试使用
  3.   

    IN('。implode(“,”,$ stor)。')

    上面的代码执行以下操作:

    implode() - 获取一个数组并将其转换为逗号分隔的字符串。

    IN() - 比较给定的逗号分隔值,如果至少存在其中一个,则返回true。

    示例(内爆):

      

    implode(“,”,array(1,2,3))等于“1,2,3”

    示例(IN):

      

    TestID IN(1,2,3)与AS相同(TestID = 1或TestID = 2或TestID = 3)

答案 1 :(得分:0)

您可能收到mysql错误,因为您的查询最终看起来像这样

UPDATE blacklist SET Array=1 where Array=0;

如果你只是回显一个完整的数组,那么你得到Array,你需要指定一个数组元素(例如$stor[1])。

你要做的是用foreach替换你的for循环,这样你就可以一次丢掉一个元素。

此外,你的论点是倒退的。

foreach($stor as $word)
{
  mysql_query("UPDATE blacklist SET $word=1 where $word=0", $con);
}