0

SQLクエリをエコーすると表示されます

the volunteer id is 312INSERT INTO volunteer_events (event_id, volunteer_id) VALUES ('91  
', '312')

'91以降は1行にまとめずに改行しています。私は何をしているのかと思っていたので、新しい行が追加されました。

public function addUserToEvent($event,$volunteer)
{
    $event_id = $event;
    echo "the event id is ". $event_id;
    $volunteer_id = $volunteer;
    echo "the volunteer id is ". $volunteer_id;
    $sql = "INSERT INTO volunteer_events (event_id, volunteer_id) VALUES ('$event_id', '$volunteer_id')";
    echo $sql;
    return mysql_query($sql);
}

ここで addUserToEvent を呼び出しています

if(isset($_POST["events"])){
    $eventIds = $_POST["events"];
    $N = count($eventIds);
    for($i=0; $i < $N; $i++) {
      echo "</br>";
      echo "The events IDs are";
      echo "</br>";
      echo($eid = $eventIds[$i]);

     $sql = "SELECT distinct v.id 
            FROM volunteers v
            WHERE v.first_name = '$fname'
            AND v.last_name = '$lname'
            AND v.email = '$email'";

     $results = $db->q($sql);
     if($row = $results->getAssoc()) 
      {
            $vID = $row['id'];
            echo "the vid is ". $vID;
      }
      echo "</br>";
      echo " the eid is blah ".$eid;
     echo $db->addUserToEvent($eid, $vID);
    }


}
4

1 に答える 1

2

修正は非常に簡単で、int にキャストするだけです。

public function addUserToEvent($event,$volunteer)
{
    $event = (int) $event;
    $volunteer = (int) $volunteer;
    $event_id = $event;
    echo "the event id is ". $event_id;
    [...]

私が考えているのは、フィールドのデータ型は varchar であり、INT でなければならないということです。変数をキャストすることは常に良い習慣です。

于 2013-03-11T22:07:44.893 に答える