我是新的(从今天开始)使用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);
}
?>
请帮忙修复它 - 谢谢。
答案 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注入漏洞,因为您根本没有转义输入。