2016-01-20 47 views
0

我在製作一個網站,我不需要使用PHP和PDO從表單發送信息。無效的參數編號:綁定變量的數量與令牌數量不匹配SQL

PHP代碼:

$query = 'INSERT INTO commentary (name, surname, email, user_comment, user_id) VALUES (:name, :surname, :email, :user_comment, '.$_SESSION['id'].') '; 

$query_p = array(':name' => $_POST['name'],':surname' => $_POST['surname'], ':email' => $_POST['email'],':user_comment' => $_POST['email'], ':user_id'=>$_SESSION['id']); 

try 
{ 
    $statment = $dbh->prepare($query); 
    $result = $statment->execute($query_p); 
} 
catch(PDOException $e) 
{ 

    die("Can't run this query: " . $e->getMessage()); 
} 

HTML代碼:

<h1 class="contactHeader"> Form</h1> 
<div class="form"> 
<form id="contact" name="contact" method="post" action="user.php" onreset="return confirm('Chcete to vymázat?')" method="post"> 

    <label class="leftElement" for="name">Name </label><span class="required">*</span><br /> 
    <input class="leftElement" id="name" name="name" type="text" ><br /> 
    <label class="centerElement" for="surname">Surname:</label><span class="required">*</span><br /> 

    <input class="centerElement" type="text" name="surname" id="surname"><br /> 
    <label class="leftElement" for="email">Email: </label><span class="required">*</span><br /> 
    <input class="leftElement" type="text" name="email" id="email"><br /> 
    <label class="centerElement" for="user_comment">Comment:</label><br /> 


    <textarea 
    class="centerElement" id="user_comment" name="user_comment" rows="7" cols="30"></textarea><br /> 
    <input type="submit" name="submit" id="submit" value="Send"> 
    <input type="reset" name="reset" id="reset" value="Reset"> 
</form> 

在表數據庫 「comentary」 我有ID,姓名,電子郵件,USER_COMMENT和USER_ID我得到表單會話$_SESSION['id'] 。但是,當我嘗試發送此表單時,出現錯誤SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens, 可能是我做錯了什麼?數據庫連接正常。我已經控制了它。

謝謝。

+0

錯誤消息是不言自明的。你試圖將更多的值傳遞給'execute',而不是你在查詢中擁有':placeholders'! – deceze

+0

@deceze你的意思是問題出在user_id? – Lemmy

+0

是的,您的查詢中沒有令牌':user_id'。 – deceze

回答

1
$query = 'INSERT INTO commentary (name, surname, email, user_comment, user_id) VALUES (:name, :surname, :email, :user_comment, '.$_SESSION['id'].') '; 

$query_p = array(':name' => $_POST['name'],':surname' => $_POST['surname'], ':email' => $_POST['email'],':user_comment' => $_POST['email'], ':user_id'=>$_SESSION['id']); 

您沒有爲您的user_id設置一個:佔位符,因此請勿在execute中設置一個。

+0

這樣做了。謝謝! – Lemmy

+0

您的答案查詢和疑問查詢有什麼不同? – Monty

+0

沒有什麼區別,我張貼了兩行來顯示我在說什麼。 – tkausl

相關問題