【问题标题】:Simulate a failed mysql INSERT query模拟失败的 mysql INSERT 查询
【发布时间】:2012-09-11 17:25:47
【问题描述】:

有没有办法在 mysql 中模拟失败的INSERT 查询?由于我在本地运行 PHP/MySQL,因此返回值将始终为 TRUE。在 xampp 中打开 MySQL 似乎不起作用。

注意:我可能看错了。请随时告诉我。

【问题讨论】:

  • 您可以使用唯一键创建测试表,创建有效记录,然后插入具有该键副本的另一条记录。
  • 或者尝试插入到一个不存在的表中。
  • 我不明白:“返回值”是什么?这个价值从何而来?为什么要模拟失败的插入?
  • 可能有用:stackoverflow.com/a/13011787/15721(它的Java,但如果您在mysql和php之间放置一些实用程序函数以便您可以拦截东西,这可能是一种可行的方法)

标签: php mysql xampp


【解决方案1】:

几种方法:

  • 撤销数据库用户的 INSERT 权限
  • 将您的数据库访问代码包装到中间层并在其中模拟故障

或者,如果您只需要测试 INSERTS,请创建如下的哑函数:

function my_query( $link, string $query ) {
  if( rand() %1 ) {
    return false;
  } else {
    return mysqli_query( $link, $query );
  }
}

并更新您的 INSERT 代码以改为调用 my_query。调整你的失败条件和愉快的测试:)

【讨论】:

  • 有趣的答案。 中间层的数据库访问代码是什么意思?我以前从未听说过。
  • 先查看编辑后的答案。 middle layer 我的意思是任何简单的类都会做 DB“谈话”,所以不要做即 mysqli_connect() 你做 $db = new MyDatabaseHandler() (它在构造函数或第一次使用时连接)而不是直接做 mysqli_query()你做$db->query()等等。编写这样的类基本上是相当简单的任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 2011-09-18
  • 1970-01-01
  • 2016-06-21
  • 2014-11-01
  • 2019-09-27
  • 1970-01-01
相关资源
最近更新 更多