成功插入单行后,$ mysqli-> info为null

时间:2014-03-25 14:31:31

标签: php mysql mysqli

使用单个insert语句插入多行后,我从$ mysqli-> info获得预期的行为。

var_dump( $mysqli->info );
string 'Records: 1246  Duplicates: 0  Warnings: 0' (length=41)

插入单行后,$ mysqli-> info返回NULL

var_dump( $mysqli->info );
null
var_dump( $mysqli->affected_rows );
int 1

mysqli_info()返回一个空字符串

var_dump( mysqli_info( $mysqli ) )
string '' (length=0)

我找不到任何对此行为的引用!我希望在单个插入后的信息如

string 'Records: 1  Duplicates: 0  Warnings: 0' (length=38)

PHP 5.4.12,mySQL 5.6.12

执行代码:

$sql = "INSERT INTO module_history (BackupDate, Modules) VALUES ('2014-01-01','Module List1')";
$db->query($sql);
echo $sql . "\n";
var_dump( $db->info );
var_dump( $db->affected_rows );

$sql = "INSERT INTO module_history (BackupDate, Modules) VALUES ('2014-01-02','Module List2'),('2014-01-03','Module List3')";
$db->query($sql);
echo $sql . "\n";
var_dump( $db->info );
var_dump( $db->affected_rows );

结果:

INSERT INTO module_history (BackupDate, Modules) VALUES ('2014-01-01','Module List1')
null
int 1
INSERT INTO module_history (BackupDate, Modules) VALUES ('2014-01-02','Module List2'),('2014-01-03','Module List3')
string 'Records: 2  Duplicates: 0  Warnings: 0' (length=38)
int 2

1 个答案:

答案 0 :(得分:3)

http://dev.mysql.com/doc/apis-php/en/apis-php-mysqli.info.html

表3.9可能的mysqli_info返回值

查询类型 - 示例结果字符串

  • INSERT INTO ... SELECT ...记录:100次重复:0警告:0
  • INSERT INTO ... VALUES(...),(...),(...)记录:3个重复:0个警告:0
  • LOAD DATA INFILE ...记录:1已删除:0跳过:0警告:0
  • ALTER TABLE ...记录:3个重复:0个警告:0
  • 更新...匹配的行数:40更改:40警告:0

注意

不支持不属于上述格式之一的查询。在这些情况下,mysqli_info将返回一个空字符串。


结论:上面没有列出单行插入的案例。因此,应该预期空字符串。