MySQLi
在线手册:中文  英文

mysqli::get_warnings

mysqli_get_warnings

(PHP 5 >= 5.1.0)

mysqli::get_warnings -- mysqli_get_warningsGet result of SHOW WARNINGS

说明

面向对象风格

mysqli_warning mysqli::get_warnings ( void )

过程化风格

mysqli_warning mysqli_get_warnings ( mysqli $link )
Warning

本函数还未编写文档,仅有参数列表。


MySQLi
在线手册:中文  英文

用户评论:

marcus at synchromedia dot co dot uk (2009-08-19 14:02:05)

With a bit of rooting about with reflection, I spotted that the mysqli_warning class has a next() function, so I tried calling it and it does indeed progress through the available warnings! Following on from my earlier example:

<?php
$r 
mysqli_query($db"INSERT INTO blah SET z = '1'");
$j mysqli_warning_count($db);
if (
$j 0) {
    
$e mysqli_get_warnings($db);
    for (
$i 0$i $j$i++) {
        
var_dump($e);
        
$e->next();
    }
}
?>

There is a simple way of traversing the warnings:

<?php
$r 
mysqli_query($db"INSERT INTO blah SET z = '1'");
if (
mysqli_warning_count($db)) {
   
$e mysqli_get_warnings($db);
   do {
       echo 
"Warning: $e->errno$e->message\n";
   } while (
$e->next());
}
?>

marcus at synchromedia dot co dot uk (2009-08-19 07:13:58)

I'm not sure how useful this function is as implemented. Take this example:
CREATE TABLE `blah` (
`x` varchar(100) NOT NULL,
`y` varchar(100) NOT NULL,
`z` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO blah SET z = '1';
Query OK, 1 row affected, 2 warnings (0.00 sec)
mysql> show warnings;
+---------+------+----------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------+
| Warning | 1364 | Field 'x' doesn't have a default value |
| Warning | 1364 | Field 'y' doesn't have a default value |
+---------+------+----------------------------------------+
Doing the same from PHP using mysqli_get_warnings(), you get this instead:
object(mysqli_warning)#4 (3) {
["message"]=>
string(38) "Field 'x' doesn't have a default value"
["sqlstate"]=>
string(5) "HY000"
["errno"]=>
int(1364)
}
i.e. it only returns the first warning. I suspect it should return an array of these objects rather than just one. At least you know what the return value looks like now, since the docs don't say!

易百教程