【发布时间】:2015-07-21 21:37:00
【问题描述】:
是否可以使用一个 sql 查询更改多个表值?例如,我的名为“newsletter”的表有一个名为“received”的列,其枚举值默认为 0。当我发送我的时事通讯时,此值更改为 1,因此收件人不会收到相同的电子邮件两次。我想制作一个脚本,在解析时会将所有接收到的值更改回 0,这样我就可以发送另一个时事通讯。到目前为止,我将提供我的 PHP 代码,并且我已经测试了链接和数据库连接文件,因此连接到数据库没有问题。
PHP
include_once "connect_to_mysql.php";
$rec_value = mysql_query("SELECT * FROM newsletter WHERE received='1'");
$numRows = mysql_num_rows($rec_value);
while($row = mysql_fetch_array($rec_value)){
$email = $row["email"];
if ($numRows == 1) {
mysql_query("UPDATE newsletter SET received='0' WHERE email='$email'");
}
}
有人可以帮我更改我的代码,以便在执行此脚本时将所有接收到的值设置回 0 吗?谢谢!
【问题讨论】:
-
你的意思是像
UPDATE newsletter SET col1 = 'val1', col2 = 'val2'... -
如果你想
change all of the received values back to 0那么只需删除你的WHERE条件 -UPDATE newsletter SET received='0' -
您应该转义
$email。恶意数据可能在数据库中,如果它进入查询,您就会被注入。 en.wikipedia.org/wiki/SQL_injection#Second_Order_SQL_Injection -
是的,@Fred-ii- 所说的只要您不在更新中放置 where 条件,它将执行所有行。
标签: php mysql sql-server