【发布时间】: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。另外,每个用户一张桌子?那是非常糟糕的架构设计 -
是的,我知道这是一个糟糕的架构设计,但我只是认为从长远来看这将是最简单的,因为我们希望能够在拳头和所有这些东西之间提取报告,所以为了让以后做数学更容易,我们决定这样做。感谢您对连接错误的评论!