【发布时间】:2015-07-15 10:24:53
【问题描述】:
我在使用 mysqli 时遇到了一个问题,我不知道为什么会这样。
在 MariaDB 5.5.41 服务器上,我有一个表 tbl1
a | b
--+--
1 | 1
我创建了以下 PHP 脚本:
<?php
$db_host="localhost";
$db_user="user";
$db_pass="pass";
$db_db="db_test";
// mysqli test
$db_link = @new mysqli($db_host,$db_user,$db_pass,$db_db);
if($db_link->connect_error) die("mysqli connect error");
$result = $db_link->query("SELECT a FROM tbl1 WHERE b='1'");
if(!$result) {
die("mysqli query error");
} else {
die("Row count:".$result->num_rows);
}
?>
结果是:
Row count:0
但如果我使用以下代码:
<?php
$db_host="localhost";
$db_user="user";
$db_pass="pass";
$db_db="db_test";
//mysql
$db_link = @mysql_connect($db_host,$db_user,$db_pass);
if(!$db_link) die("mysql connect error");
mysql_select_db($db_db,$db_link);
$result = mysql_query("SELECT a FROM tbl1 WHERE b='1'");
if(!$result) {
die("mysql query error");
} else {
die("Row count:".mysql_num_rows($result));
}
?>
结果是:
Row count:1
任何想法为什么会发生这种情况?
【问题讨论】:
-
警告:除非你有充分的理由,否则不要使用 PHP 的
@错误抑制功能。这将隐藏可能很重要的错误。 -
他使用
@对mysql代码是合理的——他控制、测试并采取行动。对于mysqli,它有些损坏,因为它立即使用NULL$db_link作为指针。 -
@Rick 我确实测试了
$db_link,但它不是NULL,但我确实发现了mysqli库的一些问题,将其更改为旧版本,现在它可以工作了。 -
请详细说明您在
mysqli发现的问题! -
你使用的是哪个php版本?