Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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插入查询_Php_Mysql_Xampp - Fatal编程技术网

Php 模拟失败的mysql插入查询

Php 模拟失败的mysql插入查询,php,mysql,xampp,Php,Mysql,Xampp,有没有办法在mysql中模拟失败的INSERT查询?因为我在本地运行PHP/MySQL,所以返回值总是TRUE。在xampp中启用MySQL似乎不起作用 注意:我可能看错了。请随时通知我。两种方法: 撤消数据库用户的插入权限 将DB访问代码包装到中间层,并在中间层模拟故障 或者,如果您只需要测试插入,请创建哑函数,如: function my_query( $link, string $query ) { if( rand() %1 ) { return false; } e

有没有办法在mysql中模拟失败的
INSERT
查询?因为我在本地运行PHP/MySQL,所以返回值总是
TRUE
。在xampp中启用MySQL似乎不起作用

注意:我可能看错了。请随时通知我。

两种方法:

  • 撤消数据库用户的插入权限
  • 将DB访问代码包装到中间层,并在中间层模拟故障
或者,如果您只需要测试插入,请创建哑函数,如:

function my_query( $link, string $query ) {
  if( rand() %1 ) {
    return false;
  } else {
    return mysqli_query( $link, $query );
  }
}
并更新插入的代码以调用
my\u query
。调整您的故障条件和快乐测试:)

两种方法:

  • 撤消数据库用户的插入权限
  • 将DB访问代码包装到中间层,并在中间层模拟故障
或者,如果您只需要测试插入,请创建哑函数,如:

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

并更新插入的代码以调用
my\u query
。调整您的失败条件和快乐测试:)

您可以创建一个具有唯一键的测试表,创建一个有效记录,然后插入另一个具有该键副本的记录。或者尝试插入到一个不存在的表中。我不明白什么的“返回值”?这个值来自哪里?为什么要模拟一个失败的插入?可能很有用:(它是Java,但如果你在mysql和php之间放置一些实用函数,那么它可能是一种可行的方法,这样你就可以拦截东西)你可以创建一个具有唯一键的测试表,创建一个有效记录,然后插入另一条带有重复键的记录。或者尝试插入到一个不存在的表中。我不明白:“返回值”是什么?这个值来自哪里?为什么要模拟一个失败的插入?可能很有用:(它是Java,但如果你在mysql和php之间放置一些实用函数,那么它可能是一种可行的方法,这样你就可以截取东西)有趣的答案。您所说的进入中间层的DB访问代码是什么意思?我以前从未听说过。请先看编辑后的答案。我所说的
中间层
是指任何一个简单的类,它会做DB“对话”,所以你不必直接做,比如
mysqli\u connect()
你可以做
$DB=new MyDatabaseHandler()
(它在构造函数中或第一次使用时连接),而不用直接做
mysqli\u query()
,你可以做
$DB->query()
等等。写这样的课基本上是很简单的任务。有趣的答案。您所说的进入中间层的DB访问代码是什么意思?我以前从未听说过。请先看编辑后的答案。我所说的
中间层
是指任何一个简单的类,它会做DB“对话”,所以你不必直接做,比如
mysqli\u connect()
你可以做
$DB=new MyDatabaseHandler()
(它在构造函数中或第一次使用时连接),而不用直接做
mysqli\u query()
,你可以做
$DB->query()
等等。编写这样的类基本上是相当简单的任务。