2012-10-08 43 views
0

我正在做一個簡單的數據庫構建器函數,它帶有一個問題ID,4個選項是一個ID和一個計數變量。如何使用foreach循環動態執行mysql查詢?

我想要做的就是在foreach中,對所有單獨的選項變量進行選項並執行mysql_query()。正如你所看到的,我把它們放在一個數組中,這樣我就可以在foreach中循環它們。

我認爲$ var變量,即選項值是夾住錯誤。錯誤mysql回報給我的是:

您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本在1號線

使用近「選項,順序)VALUES(」 e3397df9241278bfcad1945420398baa817acd7a」,‘005e913c9c1a’我的繼承人代碼正確的語法手冊:

$question_id = $_POST['question_id']; 
$option1 = $_POST['option_1']; 
$option2 = $_POST['option_2']; 
$option3 = $_POST['option_3']; 
$option4 = $_POST['option_4']; 

$vars = array($option1, $option2, $option3, $option4); 

$count = 1; 
foreach ($vars as $var){ 

    $id = sha1(microtime()); 
    echo "ID: ".$id."<br/>Q ID: ".$question_id."<br/>Option: ".$var."<br/>Order: ".$count."<br/><br/>"; 

    $result = mysql_query("INSERT INTO question_options (id, question_id, option, order) VALUES ('$id', '$question_id', '$var', '$count') ") or die(mysql_error()); 
    $count++; 
} 

真的感激如果你能幫助告訴我什麼是錯的歡呼聲

回答

4

秩序是一個MySQL的關鍵字,您需要進行轉義:。此外

$result = mysql_query("INSERT INTO question_options (`id`, `question_id`, `option`, `order`) VALUES ('$id', '$question_id', '$var', '$count') ") or die(mysql_error()); 

喲你應該看看MySQLi或PDO來參數化你的查詢。 mysql_函數已棄用。

+0

是,救生員,沒有線索,他們的關鍵字,謝謝,我會繼續關鍵字的前提下,從現在開始!再次感謝! – cwiggo

+0

加,是的,我已經使用pod和mysqli,記住它,並可能很快轉換 – cwiggo

2

術語optionorder是MySQL的特殊名稱。

使用下面的語句來代替:

$result = mysql_query("INSERT INTO question_options (id, question_id, `option`, `order`) VALUES ('$id', '$question_id', '$var', '$count') ") or die(mysql_error());