致命错误:未识别的方法 mysqli:fetch_array() [重复]
Posted
技术标签:
【中文标题】致命错误:未识别的方法 mysqli:fetch_array() [重复]【英文标题】:Fatal Error: unidentified method mysqli:fetch_array() [duplicate] 【发布时间】:2014-09-13 23:59:00 【问题描述】:我正在编写一个时钟程序,但我遇到了一个在代码中似乎找不到的错误。查看代码后,我没有发现它说有一个错误。我也对 php Code Checker 进行了检查,但没有找到。这是我正在使用的代码。我修改了敏感信息。我做错了什么,我该如何解决。我在此处关注第三个答案的示例: display data from SQL database into php/ html table
这是输出:
致命错误:在第 31 行的文件路径中调用未定义的方法 mysqli::fetch_array()
打卡ID时间打卡类型组部门备注 和代码
<head>
<title>View My Punches</title>
<body bgcolor="#9966FF">
<link rel="icon" type="image/ico" href="path to favicon"/>
</head>
<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
define('DB_NAME', 'name');
define('DB_USER', 'user');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'host');
$link = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($link->connect_errno > 0)
die('Could not connect: ' .connect_error());
$userid_value = $_POST['userid'];
$table = "tc_".$userid_value;
$checkusersql = "SELECT * FROM tc_users WHERE userid = '$userid_value'";
$usercheck = $link->query($checkusersql);
$punchessql = "SELECT * FROM $table";
$result = $link->query($punchessql);
if ($usercheck->num_rows == 0)
echo "Sorry, " . $userid_value . " is not a valid user ID. Please try again.";
else
echo "<table>";
echo "<tr><td>Punch ID</td><td>Time</td><td>Punch Type</td><td>Group</td><td>Department</td><td>Notes</td></tr>";
while ($row = $link->fetch_array($result))
echo "<tr><td>" . $row['id'] . "</td><td>" . $row['time'] . "</td></tr>" . $row['punchtype'] . "</td><td>" . $row['groupname'] . "</td><td>" . $row['dept'] . "</td><td>" . $row['notes'] . "</td><td>";
echo "</table>";
?>
【问题讨论】:
我建议您阅读这篇文章,了解如何使您的查询免受 SQL 注入的影响 ~ php.net/manual/mysqli.quickstart.prepared-statements.php。您在使用未定义函数connect_error()
时也存在潜在错误。您可能打算使用$link->connect_error
。另外,每个用户一张桌子?那是非常糟糕的架构设计
是的,我知道这是一个糟糕的架构设计,但我只是认为从长远来看这将是最简单的,因为我们希望能够在拳头和所有这些东西之间提取报告,所以为了让以后做数学更容易,我们决定这样做。感谢您对连接错误的评论!
【参考方案1】:
用$result->fetch_array()
代替$link->fetch_array($result)
有效的可选mysqli_result::fetch_array()
参数是MYSQLI_ASSOC
、MYSQLI_NUM
或MYSQLI_BOTH
(默认),以确定值数组应该以关联格式还是数字格式返回。
【讨论】:
【参考方案2】:使用$result
而不是$link
。
提问前请阅读documentation。并阅读错误消息。我花了 5 秒钟才弄清楚问题出在哪里,这告诉我你应该能够自己解决。
【讨论】:
以上是关于致命错误:未识别的方法 mysqli:fetch_array() [重复]的主要内容,如果未能解决你的问题,请参考以下文章