【问题标题】:MysQL SELECT statement if empty [duplicate]MySQL SELECT 语句如果为空 [重复]
【发布时间】:2017-10-19 09:22:51
【问题描述】:

我在一些我认为应该很容易解决的问题上有点挣扎。

我首先检查数据库是否存在。如果日期不存在,我希望它插入日期,但我不确定如何构造 IF 语句部分。非常感谢

$date='2017-05-13';
$select_date = mysqli_query($link, "SELECT * from `marker` WHERE `date`='$date' ");

$insert_date = mysqli_query($link, "INSERT INTO `marker` (`date`,`value`) VALUES ('$date','1') ");

【问题讨论】:

  • 检查第一次查询后返回的行数,如果是0,运行插入
  • 使用mysqlON DUPLICATE KEY语法
  • SO 并不是一个真正的教程网站。有很多网站可以做到这一点。
  • dup 目标提供 PDO 代码而不是 mysqli。如果您刚刚开始学习,请切换到 PDO。
  • 其次,如该答案中所述,不要执行 SELECT 后续插入

标签: php mysql mysqli


【解决方案1】:

一般来说,对于这种类型的操作,您希望使用on duplicate key update。这从唯一索引开始:

CREATE UNIQUE INDEX unq_marker_date ON marker(date);

那么数据库保证每个日期只有一行。然后你可以这样插入:

INSERT INTO `marker` (`date`, `value`)
    VALUES ('$date', '1')
    ON DUPLICATE KEY UPDATE `date` = VALUES(`date`);

ON DUPLICATE KEY 部分除了防止重复日期的错误之外什么都不做。

【讨论】:

  • 谢谢我已经实现了这个,它可以按要求工作。很遗憾我的问题被否决了,因为其他人认为它太简单了。再次感谢您提供此代码!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
相关资源
最近更新 更多