0

这是我使用 for 循环运行 10 次的代码:

$query = "UPDATE fblikes SET likes = '$var[$i]' WHERE link = '$web[$i]'";

if(mysql_query($query))
{
    echo $query;
}                         
else
{
    echo mysql_error();
}

代码运行,我确实ok!打印了 10 次,但表中没有任何反应。我还检查了 2 个数组,即$var$web​​ ,它们包含正确的值。

查询对我来说看起来不错。这是我得到的(10 个输出之一):UPDATE fblikes SET likes = '5' WHERE link = 'xxxxxxx.com/xxxx/iet.php';

4

1 回答 1

2

我不知道问题到底是什么,要弄清楚你应该打印 的值$query,并向我们展示你得到了什么。更多,请告诉我们mysql_affected_rows()调用后的价值mysql_query()

但是,您的代码实现了一些错误的模式。

首先,你没有逃跑$var[$i]并且$web[$i]有两个潜在的影响:

  • 您可能会产生错误的查询
  • 您不会清理数据库的输入,从而使您的应用程序面临安全问题

此外,您执行了几个类似的查询,这些查询仅在所提供的输入上有所不同。

对于这两个问题,解决方案是使用准备好的语句,这将为您提供更多的控制、安全性和性能。考虑放弃mysql_*函数并切换到mysqli_*or PDO,并阅读准备好的语句

于 2013-02-17T10:06:49.967 回答