大家好,我是新来的,我很难分析这段代码。 一个错误继续显示,我不知道该怎么做。
mysql_fetch_array()期望参数1为资源,布尔值为
每次我使用搜索时都会发生这种情况。任何想法?
if(isset($_POST['search']))//if search
{
if(($_POST['year']) && ($_POST['month']) && ($_POST['day']))
$_SESSION['select']= mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' AND emonth = '".$_POST['month']."' AND edate = '".$_POST['day']."' ;" or die(mysql_error()));
else if(($_POST['year']) && ($_POST['month']))
$_SESSION['select']=mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' AND emonth = '".$_POST['month']."' ;" or die(mysql_error()));
else if(isset($_POST['year']))
$_SESSION['select']= mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' ;" or die(mysql_error()));
else if(!$_POST['year'])
die("FILL IN AT LEAST THE YEAR");
else
die("Date not found");
if($_POST['year'])
while($select2 = mysql_fetch_array($_SESSION['select']))
{
$n1 = $select2[0];
$n2 = $select2[1];
$n3 = $select2[2]."-".$select2[3]."-".$select2[4];
echo
"<tr>
<td width=\"30px\"> $n1</td>
<td width=\"30px\"> $n2</td>
<td width=\"30px\"> $n3</td>
</tr>";
}
答案 0 :(得分:0)
您的mysql_query()
行中的每一行都是错误的。您应该在添加or die()
之前关闭括号。
这就是为什么你得到一个布尔值而不是死于错误。
答案 1 :(得分:0)
$_SESSION['select']= mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' AND emonth = '".$_POST['month']."' AND edate = '".$_POST['day']."' ;" or die(mysql_error()));
应该是
$_SESSION['select']= mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' AND emonth = '".$_POST['month']."' AND edate = '".$_POST['day']."' ;") or die(mysql_error());
也就是说,or die(mysql_error())
应该在 mysql_query
之外。
那,或者你是SQL通过未经过消毒的POST
参数注入自己。
答案 2 :(得分:0)
是的,错误说明了一切
你这样做
while($select2 = mysql_fetch_array($_SESSION['select']))
使用
$result = mysql_fetch_array($_SESSION['select']));
if($result) {
// go to while
} else {
mysql_error();
}
答案 3 :(得分:0)
您的查询存在问题:
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。
Alto,您的代码存在问题:摆脱PDO或mysql_*
的{{1}}个功能,不推荐使用广告:
建议的替代方案
不鼓励使用此扩展程序。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:
- mysqli_query()
- PDO ::查询()