来自$ _POST的PHP“使用未定义的常量”

时间:2013-02-25 12:52:55

标签: php mysql variables post constants

这是新的,但搜索没有成功。我的脚本出现以下错误:

  

“注意:使用未定义的常量sStatus - 假设'sStatus'在”...

  

“警告:mysql_numrows()要求参数1为资源,在”...

中给出布尔值

我希望后者是第一个问题。如果您需要更多代码,请告诉我,但与之相关的部分是:

line31:

$sStatus = $_POST['sStatus'];

和第43至53行:

if (sStatus == "all")
{
    $query="SELECT * FROM tickets WHERE RequestBy='$sName'";
}
else
{
    $query="SELECT * FROM tickets WHERE RequestBy='$sName' AND Status='$sStatus";
}
//put query in result and count rows ready to loop for table display
$result=mysql_query($query);
$num=mysql_numrows($result);

sStatus从主页上的表单中提取,并且是“0”,“1”或“全部。相同的变量在脚本中进一步使用,if为”0“或”1“改为”成功打开“或”关闭。

最值得赞赏的任何帮助。 马丁

4 个答案:

答案 0 :(得分:0)

$sStatus = $_POST['sStatus'];更改为:$sStatus = isset($_POST['sStatus'])?$_POST['sStatus']:"";

if (sStatus == "all")更改为if ($sStatus == "all") =>缺少$

$num=mysql_numrows($result);更改为$num=mysql_num_rows($result);

答案 1 :(得分:0)

错误1:

第43行使用sStatus代替$sStatus

错误2:

该函数名为mysql_num_rows()

并注意:请不要使用mysql_*个功能。请改用PDO,尤其是对于预准备语句,这也将提高应用程序的安全性。

答案 2 :(得分:0)

您错过了“$”:

if ($sStatus == "all") 

那应该摆脱警告。此外,您在第二个查询中缺少单引号:

$query="SELECT * FROM tickets WHERE RequestBy='$sName' AND Status='$sStatus'";

希望这有帮助。

答案 3 :(得分:0)

 if ($sStatus == "all")
 {
  $query="SELECT * FROM tickets WHERE RequestBy='$sName'";
 }
else
{
$query="SELECT * FROM tickets WHERE RequestBy='$sName' AND Status='$sStatus";
}

你错过了$ sStatus“$”,这就是为什么它假设它是一个常数。我同意,您应该使用PHP PDO 对象进行数据库操作,它使查询非常容易使用..