-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() - 比较给定的逗号分隔值,如果其中至少一个存在则返回 true。

示例(内爆):

内爆(“,”,数组(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]例如)。

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

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

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