我有一个问题,我的脚本有三个mysql_query
应该相互使用,我正在尝试创建一个脚本,通过将其状态从已售="否"更改为"是"来预订票证,脚本计算用户在html表单上输入的票证数量,这给服务器端一个变量,其中的票数称为= $tickets
。
提示:这是一个这样的模型,因此不需要MySQL注入安全性
这是我的代码:
//get ticket status
$eventTicket = mysql_query("SELECT eventTickets FROM beventreservation WHERE eventId = '$eventId'") or die(mysql_error());
$ticketrow = mysql_fetch_array($eventTicket) or die(mysql_error());
//test... which is working !
echo $ticketrow['eventTickets'];
//get classId from classes
$selectClass = mysql_query("SELECT classId FROM quotaclasses WHERE className = '$classes' AND eventFK = '$eventId'") or die (mysql_error());
$classrow = mysql_fetch_array($selectClass) or die(mysql_error());
//this var is to define which class the user used
$choosedClass = $classrow['classId'];
//test ... which did not work !!!
echo $classrow['classId'];
if ($ticketrow['eventTickets'] == "Yes")
{
for($counter=1;$counter<$numberOfTickets;$counter++)
{
$bookTicket = mysql_query("UPDATE unites SET ticketSold = 'Yes' WHERE businessreservationIdFk = '$eventId' AND classIDfk ='$choosedClass'") or die(mysql_error());
echo "ticket ". $counter . " done !";
}
}
脚本没有获取此语法,并且我的页面上没有显示任何错误!
$classrow = mysql_fetch_array($selectClass) or die(mysql_error());
另外,我试图在这个语法之后回显变量$tickets
,它没有出现,在同一脚本页面上获取超过mysql_query有问题吗? 请告诉我我哪里出错了。
不要将die()
与mysql_fetch_*()
调用一起调用。 如果没有返回任何行,mysql_fetch_array()
返回 FALSE
,这会触发您的die()
并终止您的脚本,即使没有错误。 由于您已经在mysql_query()
调用中对$selectClass
进行了错误检查,因此您知道它已成功。
// This query returned no rows, but was successful syntactically and functionally.
$selectClass = mysql_query("SELECT classId FROM quotaclasses WHERE className = '$classes' AND eventFK = '$eventId'") or die (mysql_error());
相反,请测试是否返回了行:
if (mysql_num_rows($selectClass) > 0) {
// Fetch and do other stuff
$classrow = mysql_fetch_array($selectClass);
$choosedClass = $classrow['classId'];
// etc...
// etc...
}
else {
// Do whatever you need to do if no rows return
}