1

スクリプトに3つ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より多くをフェッチするのに問題がありますか?ここでどこが間違っているのか教えてください。

4

1 に答える 1

4

die()通話と同時に通話しないでくださいmysql_fetch_*()。行が返されない場合、 がmysql_fetch_array()返され、エラーがなくてもスクリプトがFALSEトリガーされて強制終了されます。die()呼び出しで既にエラー チェックを行っ$selectClassているため、mysql_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
}
于 2012-04-28T12:41:30.330 に答える