mysql_fetch_array()警告和mysql_num_rows()警告

时间:2013-03-07 19:25:40

标签: php mysql mysql-num-rows

我是新的(从今天开始)使用PHP和MySQL来完成我的一个迷你项目。 我有我的数据库和我制作一个PHP代码来获取user_id并从表中得分,但我得到这个错误,我不知道如何得到它们:你可以看到我最终获得我的请求响应。< / p>

  

警告:mysql_fetch_array()期望参数1是资源,   给出的字符串   /home/marathon/domains/marathon-il.com/public_html/Apps/million/view_all.php   在第15行

     

警告:mysql_num_rows()期望参数1为resource,null   给定的   /home/marathon/domains/marathon-il.com/public_html/Apps/million/view_all.php   第18行{“成功”:0,“消息”:“new_user”}

这是我的getinfo.php:

<?php

$response = array();

require_once __DIR__ . '/db_connect.php';

$db = new DB_CONNECT();

$user = $_POST['userid'];

$result = mysql_fetch_array("SELECT * FROM users WHERE user_id = '$user'");

// check for empty result
if (mysql_num_rows($result) > 0){

        $userinfo = array();
        $userinfo["user_score"] = $result["score"];
        $userinfo["user_date"] = $result["date"];

        $response['info']= $userinfo;
    $response["success"] = 1;

    echo json_encode($response);;

} 
else {
    $response["success"] = 0;
    $response["message"] = "new_user";
    echo json_encode($response);
}
?>

请帮忙修复它 - 谢谢。

4 个答案:

答案 0 :(得分:0)

mysql_fetch_array需要来自mysql_query

的调用的结果对象

应该是这样的 $result = mysql_query("SELECT......."); $var = mysql_fetch_array($result);

答案 1 :(得分:0)

你必须先实际执行查询。尝试查找mysql_query

$result = mysql_query("SELECT * FROM users WHERE user_id = '$user'")
$ar = mysql_fetch_array($result);

答案 2 :(得分:0)

使用mysql_fetch_array函数的正确方法如下。请注意,我们首先执行创建资源对象的查询。然后我们将该对象传递给mysql_fetch_array和mysql_num_rows函数:

$result = mysql_query("SELECT * FROM users WHERE user_id = '$user'") or die(mysql_error());
while($row=mysql_fetch_array($result)){
    $userinfo = array();
    $userinfo["user_score"] = $row["score"];
    ....
}

同样你应该使用如下的mysql_num_rows(假设已经创建了$ result对象):

$numRows = mysql_num_rows($result);

请注意,您不应使用mysql_ *函数,但应学习mysqli函数。

答案 3 :(得分:0)

在当前代码中,您实际上从未对数据库运行查询。您必须先使用mysql_query()才能使用mysql_num_rows()mysql_fetch_array()。因为您没有将结果集资源传递给这些函数,所以您收到错误。

试试这个:

$sql_result = mysql_query("SELECT * FROM users WHERE user_id = '$user'");

if (false === $sql_result) {
    // query failed for some reason
    throw new Exception('Query failed with error: ' . mysql_error());
}

$rows = mysql_num_rows($sql_result);
$result = array();

if ($rows > 1) {
    // too many rows were returned
    throw new Exception('Too many rows returned');
} else if (mysql_num_rows($result) === 1){
    $result = mysql_fetch_array($result);
    // continue  with rest of your code 

你应该绝对看看使用mysqli或PDO而不是mysql函数。我只回答了一个答案,告诉你逻辑步骤是什么(对于mysqli或PDO来说类似)以及你应该如何实际处理每个数据库函数的所有可能结果。确保你有错误处理。在尝试解决查询,数据库连接等问题时,它将为您节省大量时间。

您还需要查看SQL注入漏洞,因为您根本没有转义输入。