可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
<?php
include 'connect.php';
include 'header.php';
$page = "signup.php";
// receive the invite code:
$code = $_POST['code'];
$sql = "SELECT codes FROM invites WHERE codes='$code'";
// check the table for matching codes
$result = mysql_query($sql);
// check if the request returned 1 or 0 rows from the database
if (mysql_query($result)) {
// end any previously defined sessions.
session_start();session_unset();session_destroy();
// start a new session
session_start();
// define the session variable.
// this allows us to check if it's set later and is required for
// the script to run properly.
$code = $_POST["code"];
mysql_query("DELETE FROM invites WHERE codes='$code'");
header('Location: '.$page);
exit;
} else {
echo "Invite invalid. Please try again later.";
echo $code;
}
include 'footer.php';
?>
我正在尝试将邀请系统实施到我正在处理的网页上。但是,在尝试评估是否存在包含邀请代码的行时,我保持一无所知或此警告。在这种情况下的警告,但如果我将if状态更改为== 1,它允许每个人不管代码和== 0确实抛出不同的错误。
答案 0 :(得分:3)
if (mysql_query($result)) {
尝试mysql_num_rows。
答案 1 :(得分:1)
这里有一些问题。
1)SQL注入漏洞,不要直接在查询中传递超全局$ _POST或$ _GET或任何其他用户提供的变量! 在将变量放入查询之前至少使用 mysql_real_escape_string() ,或者更好地查看参数化查询,这是避免SQL漏洞的最佳方法
2)
$result = mysql_query($sql);
// check if the request returned 1 or 0 rows from the database
if (mysql_query($result)) ....
这不会检查请求是否返回1行或0行,您应该在此使用mysql_num_rows()
if(mysql_num_rows() == 1) //or whatever you need to check
3)
session_start();session_unset();session_destroy();
// start a new session
session_start();
应该在页面中的任何内容之前调用 session_start()。不知道为什么这种调用,取消,破坏,在这里回忆它的冗余。如果您想要其他ID,请使用session_regenerate_id();
正如其他人所说,在查询中使用一些错误报告,例如
$result = mysql_query($sql) or die(mysql_error())
实际看到失败的地方,地点和原因。
答案 2 :(得分:0)
问题是你的疑问。首先检查你的陈述并使用它:
$result = mysql_query($sql) or die(mysql_error());
而不是
$result = mysql_query($sql);
因此,您可以看到SQL查询中是否有任何错误。