【发布时间】:2013-02-23 04:04:40
【问题描述】:
对于我的一个迷你项目,我是 PHP 和 MySQL 的新手(从今天开始)。 我有我的数据库,我制作了一个 PHP 代码来从表中获取 user_id 和分数,但我得到了这个错误,我不知道如何解决它们:你最终可以看到我得到了我请求的响应。
警告:mysql_fetch_array() 期望参数 1 是资源, 给出的字符串 /home/marathon/domains/marathon-il.com/public_html/Apps/million/view_all.php 在第 15 行
警告:mysql_num_rows() 期望参数 1 是资源,null 给出 /home/marathon/domains/marathon-il.com/public_html/Apps/million/view_all.php 第 18 行 {"success":0,"message":"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);
}
?>
请帮助修复它 - 谢谢。
【问题讨论】:
-
您没有使用php.net/mysql_error 来捕获错误,因此难怪代码会任意中断。还要提防SQL注入php.net/manual/en/security.database.sql-injection.php
-
您是 PHP 新手,您应该学习使用 mysqli 或 PDO,而不是已弃用的 mysql_* 函数。具体来说,我还建议学习如何使用准备好的语句来防止当前存在的 SQL 注入漏洞。
标签: php mysql mysql-num-rows