2012-04-28 95 views
1

我有一个问题我的脚本有三个mysql_query应后相互使用,我想创建一个脚本,预订门票通过改变他们的身份售出=“无”到“有” ,该脚本计算用户在html表单上输入的票数,该表单向服务器端提供了一个变量,其中包含票数= $ticketsPHP的MySQL fetch语句获取问题

提示:这是这样一个模型,以便无需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多个相同的脚本页面上的问题吗?请告诉我,我在哪里错了。

回答

4

不要用mysql_fetch_*()电话呼叫die()结合。如果没有返回行,mysql_fetch_array()返回FALSE,这将触发你的die()并杀死即使没有错误的脚本。既然你已经穿上错误上$selectClassmysql_query()电话检查,你知道它已经成功了。

// 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 
}