MySQLI fetch_array()
Posted
技术标签:
【中文标题】MySQLI fetch_array()【英文标题】: 【发布时间】:2015-02-28 11:39:42 【问题描述】:我对以下内容有一个小问题
public function getSiteName()
$query = "SELECT name FROM siteinfo";
$result = $this->con->query($query);
$row = $result->fetch_array(mysqlI_ASSOC);
printf ("%s (%s)\n", $row["name"]);
连接到数据库时我没有收到错误,但是我收到以下信息
Fatal error: Call to a member function fetch_array() on a non-object in /Users/russellharrower/Sites/evocca/etrading/system/core.php on line 15
我想知道为什么它不起作用?我用http://php.net/manual/en/mysqli-result.fetch-array.php
正在使用的引擎是 InnoDB
【问题讨论】:
$result 成功时会返回一个 mysqli_result 对象,失败时返回 FALSE。请与if (!$result) die($this->con->error);
联系。
您的另一个问题***.com/q/27731077 包含if (!$conn->connect_errno) $this->connected = true;
,所以您确定您的参数正确吗?你可能打算在哪里做$result = $this->conn
或$result = $this->connected
?您的查询显然失败了。
做错误检查。类似if(!$result) ...
我怀疑您是否有类似 .. $con = mysqli_connect("localhost", "root", "","test");
的连接,您是否尝试使用:$result = $this->con->query($query);
..?然后我认为你缺少$con
,而是你有con
。
【参考方案1】:
所以经过一个小时的调试后,我必须执行以下操作。
对于我的项目,我使用 config.php 作为我放置所有数据库连接定义的位置。
config.php
<?php
define('DBServer','localhost'); // e.g 'localhost' or '192.168.1.100'
define('DBUser','root');
define('DBPass','PASSWORD');
define('DBName','ET5');
?>
core.php
<?php
class sys
protected $con;
public function __construct($con)
$this->con = $con;
public function getSiteName()
$query = "SELECT name FROM siteinfo";
$result = $this->con->query($query);
$res = array();
while ($row = $result->fetch_array())
$res[] = $row['name'];
return $res;
?>
Index.php
<?php
require_once("system/config.php");
require_once("system/core.php");
global $con ;
$con = new mysqli(DBServer, DBUser, DBPass, DBName);
if ($con->connect_errno)
echo "Failed to connect to MySQL: " . mysqli_connect_error();
$sys = new sys($con);
$result = $sys->getSiteName();
print_r($result);
?>
【讨论】:
【参考方案2】:你总是可以尝试这样的:
取自:http://php.net/manual/en/mysqli-result.fetch-assoc.php
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if ($mysqli->connect_errno)
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";
if ($result = $mysqli->query($query))
/* fetch associative array */
while ($row = $result->fetch_assoc())
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
/* free result set */
$result->free();
/* close connection */
$mysqli->close();
?>
【讨论】:
这个问题是它需要我为每个页面创建一个 .php 文件,我想要一个像 core.php 这样的核心函数 @RussellHarrower 你介意更新你的答案吗?以上是关于MySQLI fetch_array()的主要内容,如果未能解决你的问题,请参考以下文章
在 MySQLi 中使用 fetch_array 时检测数据类型
致命错误:未识别的方法 mysqli:fetch_array() [重复]