Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用MySQL DELETE子句_Php_Mysql_Sql - Fatal编程技术网

Php 使用MySQL DELETE子句

Php 使用MySQL DELETE子句,php,mysql,sql,Php,Mysql,Sql,我有一个delete子句,用于从“viewed”列datetime值早于24小时的数据库中删除行。除了查看列的默认值为0000-00-00:00:00之外,我的代码工作得很好。在这种情况下,具有默认值的每一行数据也会被删除。如何更改查询以避免发生这种情况 我的代码: $delete_expired_notifications_query= "DELETE FROM notifications WHERE user_id= '".$u_id."' AND viewed < NOW() -

我有一个delete子句,用于从“viewed”列datetime值早于24小时的数据库中删除行。除了查看列的默认值为0000-00-00:00:00之外,我的代码工作得很好。在这种情况下,具有默认值的每一行数据也会被删除。如何更改查询以避免发生这种情况

我的代码:

$delete_expired_notifications_query= "DELETE FROM notifications WHERE user_id= '".$u_id."' 
AND viewed < NOW() - INTERVAL 24 HOUR";
$delete\u expired\u notifications\u query=“从用户\u id=”的通知中删除“$u\u id.”
并查看

谢谢

明确排除:

$delete_expired_notifications_query= "DELETE FROM notifications WHERE user_id= '".$u_id."' 
AND viewed < NOW() - INTERVAL 24 HOUR" AND viewed != '0000-00-00 00:00:00';
$delete\u expired\u notifications\u query=“从用户\u id=”的通知中删除“$u\u id.”
并查看
只需添加另一个条件,使用
=

DELETE 
FROM notifications 
WHERE user_id= '".$u_id."' 
      AND viewed < NOW() - INTERVAL 24 HOUR
      AND viewed != '0000-00-00 00:00:00'
删除
来自通知
其中user_id='“$u_id.”
并查看
作为旁注,如果值来自外部,则使用
SQL注入
时查询易受攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,可以避免在值周围使用单引号