Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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 MySQLi返回错误的结果_Php_Mysql_Mysqli_Mariadb - Fatal编程技术网

Php MySQLi返回错误的结果

Php MySQLi返回错误的结果,php,mysql,mysqli,mariadb,Php,Mysql,Mysqli,Mariadb,我在使用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_d

我在使用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);
}
?>
但如果我使用以下代码:

<?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));
}
?>

知道为什么会发生这种情况吗?

PHP手册中的mysqli_fetch_行

PHP手册中的mysqli_fetch_行

警告:除非你有很好的理由,否则不要使用PHP的@error suppression功能。这将隐藏可能很重要的错误。对于mysql代码,他使用@是合理的——他控制、测试并采取行动。对于mysqli来说,它有点坏,因为它立即使用空的$db_链接作为指针。@Rick我确实测试了$db_链接,但它不是空的,但我确实发现mysqli库存在一些问题,将其更改为旧版本,现在可以工作了。请详细说明您在mysqli中发现的问题!您正在使用哪个phpversion?警告:除非您有很好的理由,否则不要使用PHP的@error suppression功能。这将隐藏可能很重要的错误。对于mysql代码,他使用@是合理的——他控制、测试并采取行动。对于mysqli来说,它有点坏,因为它立即使用空的$db_链接作为指针。@Rick我确实测试了$db_链接,但它不是空的,但我确实发现mysqli库存在一些问题,将其更改为旧版本,现在可以工作了。请详细说明您在mysqli中发现的问题!您正在使用哪个phpversion?问题不在于从结果中获取数据,而在于使用mysqli时结果为空。问题不在于从结果中获取数据,而在于使用mysqli时结果为空。
<?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