以下是我在运行10次的for循环中使用的代码:
$query = "UPDATE fblikes SET likes = '$var[$i]' WHERE link = '$web[$i]'";
if(mysql_query($query))
{
echo $query;
}
else
{
echo mysql_error();
}
代码运行时,我确实打印了10次ok!
,但表中什么也没发生。我还检查了两个数组,即$var
和$web
,它们包含正确的值。
这个查询对我来说还可以。以下是我得到的(10个输出之一):UPDATE fblikes SET likes = '5' WHERE link = 'xxxxxxx.com/xxxx/iet.php';
我不知道问题到底是什么,为了弄清楚,你应该打印$query
的值,并向我们展示你得到了什么。此外,请在调用mysql_query()
之后告诉我们mysql_affected_rows()
的值。
然而,您的代码实现了一些错误的模式。
首先,你没有逃脱$var[$i]
和$web[$i]
的两个潜在影响:
- 您可能会产生错误的查询
- 您没有净化数据库的输入,从而使您的应用程序暴露在安全问题中
此外,您还可以执行几个类似的查询,这些查询仅在提供的输入上有所不同。
对于这两个问题,解决方案都是使用准备好的语句,这将为您提供更多的控制、安全性和性能。考虑放弃mysql_*
函数,切换到mysqli_*
或PDO
,并阅读准备好的语句。