【问题标题】:MySQLi returns erroneous resultsMySQLi 返回错误结果
【发布时间】: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版本?

标签: php mysql mysqli mariadb


【解决方案1】:

PHP 手册中的mysqli_fetch_row mysqli_fetch_row

【讨论】:

  • 问题不在于从结果中获取数据,而在于使用 mysqli 时结果为空。
猜你喜欢
  • 2022-11-30
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 2014-11-21
  • 2021-05-05
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多