2015-01-15 93 views
0

我的名字是安娜,我剛剛開始在html css javascript php和mysql中編程。我希望我的表單可以發送到我的數據庫,但每次我嘗試顯示此錯誤時:我該如何解決這個php/mysql錯誤?

警告:PDOStatement :: execute():SQLSTATE [HY093]:無效的參數編號:綁定的變量數不匹配第38行的/var/www/send_festival.php中的令牌數量

我知道它是什麼意思,但我找不到它出錯的地方。有誰有小費在哪裏看?'

在此先感謝!

代碼:

<?php 
include("opendb.php"); 

function generate_salt() { 
$fh=fopen('/dev/urandom','rb'); 
$random=fgets($fh,16); 
fclose($fh); 
return $random; 
} 

$fname = $_POST["fname"]; 
$forgan = $_POST["forgan"]; 
$fbegin = $_POST["fbegin"]; 
$fend = $_POST["fend"]; 
$floc = $_POST["floc"]; 
$fprov = $_POST["fprov"]; 
$fprice = $_POST["fprice"]; 
$fgenre = $_POST["fgenre"]; 
$fdesc = $_POST["fdesc"]; 
$fweb = $_POST["fweb"]; 


$success = false; 

    try { 
     $stmt = $db->prepare('INSERT INTO Festivals (festival_name, festival_organisator, festival_begin, festival_end, festival_location, festival_province, festival_priceregular, festival_genre, festival_description, festival_website) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); 

    $stmt->bindValue(1, $fname, PDO::PARAM_STR); 
    $stmt->bindValue(2, $forgan, PDO::PARAM_STR); 
    $stmt->bindValue(3, $fbegin, PDO::PARAM_STR); 
    $stmt->bindValue(4, $fend, PDO::PARAM_STR); 
    $stmt->bindValue(5, $floc, PDO::PARAM_STR); 
    $stmt->bindValue(6, $fprice, PDO::PARAM_STR); 
    $stmt->bindValue(7, $fgenre, PDO::PARAM_STR); 
    $stmt->bindValue(8, $fdesc, PDO::PARAM_STR); 
    $stmt->bindValue(9, $fweb, PDO::PARAM_STR); 

    $status = $stmt->execute(); 

    if ($status) { 
     header('Location: /add_festival.php?success=true'); 
    } 

} 
    catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 

?> 
+1

向我們展示一些代碼,請... – ragol

+0

是否有幫助或者我是否應該包含表單頁? –

+1

還有10?在你的sql語句中。有9個綁定變量。 – geggleto

回答

3

刪除這些行:

$stmt->bindValue(7, $fgenre, PDO::PARAM_STR); 
$stmt->bindValue(8, $fdesc, PDO::PARAM_STR); 
$stmt->bindValue(9, $fweb, PDO::PARAM_STR); 

並添加之後的第6作爲初級講座結合線:

$stmt->bindValue(7, $fprov, PDO::PARAM_STR); 
$stmt->bindValue(8, $fgenre, PDO::PARAM_STR); 
$stmt->bindValue(9, $fdesc, PDO::PARAM_STR); 
$stmt->bindValue(10, $fweb, PDO::PARAM_STR); 
+0

非常感謝! –

+0

不客氣!! –

+0

好的安娜,因爲你的問題解決了請高興這個問題 – humphrey

2

你忘了添加$stmt->bindValue(7, $fprovince, PDO::PARAM_STR),值該專欄中缺少該陳述。

+0

非常感謝(: –

3

在準備聲明中計數您的問號。他們是10,所以你需要綁定10個變量,但你只有9個綁定。

$stmt->bindValue(1, $fname, PDO::PARAM_STR); //festival_name 
$stmt->bindValue(2, $forgan, PDO::PARAM_STR); //festival_organisator 
$stmt->bindValue(3, $fbegin, PDO::PARAM_STR); //festival_begin 
$stmt->bindValue(4, $fend, PDO::PARAM_STR); //festival_end 
$stmt->bindValue(5, $floc, PDO::PARAM_STR); //festival_location 
$stmt->bindValue(6, $fprice, PDO::PARAM_STR); //festival_province 
$stmt->bindValue(7, $fgenre, PDO::PARAM_STR); //festival_priceregular 
$stmt->bindValue(8, $fdesc, PDO::PARAM_STR); //festival_genre 
$stmt->bindValue(9, $fweb, PDO::PARAM_STR); //festival_description 
????           //festival_website 
+0

這個解釋比代碼在這種情況下更重要。謝謝 – humphrey

相關問題