警告:mysql_fetch_array() 期望参数 1 是资源,在第 10 行调用堆栈的 C:wampwww


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:wampwwwloginshome.php on line 10 Call Stack

这是我的代码:

<?php
session_start();
include_once 'dbconnect.php';
if(!isset($_SESSION['user']))
 {
 header("Location: index.php");
 }
 $res=mysql_query("SELECT * FROM suppliers WHERE user_id=".$_SESSION['user']);
$userRow=mysql_fetch_array($res);
?>

错误发生在我向我的表供应商引入触发器并将user_id从 int 更改为 varchar 之后,这样现在它不是 1 或 3,而是SUPL001,当我使用错误的凭据登录时,它会接受并显示上面的错误。页面不会回显标题链接上的用户名

如果您的用户 id 是字符串,如您提到的"SUPL001",那么您需要在用户 id 周围使用引号:

$res = mysql_query("SELECT * FROM suppliers WHERE user_id = '".$_SESSION['user']."'");

旁注:

停止使用它mysql_*弃用并在 PHP 7 中关闭,使用 mysqli_*PDO

使用 mysqli,mysql_* 已被斩首。

此外,请确保在用户会话中转义用户。(SQL注入)

session_start();
// --- new connect, would be in dbconnect.php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s'n", mysqli_connect_error());
    exit();
}
// ---

if(!isset($_SESSION['user'])) {
    header("Location: index.php");
}

/* Select queries return a resultset */
if ($result = mysqli_query($link, "SELECT * FROM suppliers WHERE user_id = '".$_SESSION['user']."'")) {
    printf("Select returned %d rows.'n", mysqli_num_rows($result));
    /* free result set */
    mysqli_free_result($result);
}

mysqli_close($link);
相关文章: