2011-09-01 4 views
1

通常のmysqlクエリからPDOに変更したいと思っていましたが、その時からフォールバックを追跡することさえできません。PHPがPDO SQL問題で提出する

私に手伝ってくれる人はいますか?どんなヒントもありがとう!

Q1:何が間違っていますか? Q2:障害はどのようにして一般的に追跡できますか?あなたは上記のSQL文を準備することはありません

<?php 
// Check if add button active, start this 
if (isset($_POST['create'])) { 
$new=htmlspecialchars($_POST['newgroup']); 
$sql = "INSERT INTO contactgroups (status, gr_name) VALUES(1, : new)"; 
$sql->bindvalue(': new', $new); 
$sql->execute(); 
$arr = $sql->errorInfo(); 
echo $arr; 
echo "<meta http-equiv=\"refresh\" content=\"0;URL=groups.php\">"; 
} 
?> 

<form id="group-in" method="post" action="groups.php"> 
Add new Distribution group: <input type="text" name="newgroup" placeholder="name..."> <input type="submit" name="create" value="Create new"> 
Rename groupname: <input type="text" value="<?php echo $result['gr_name']; ?>"> <input type="submit" name="rename" value="Rename"> 
</form> 

の$ _POSTが、来ているSQLが実行されているが、bindPARAM/bindVALUEの何も来ない後...

+0

+1 @JürgenThelen:それは他の失敗だった!!どうもありがとう。 –

答えて

1

実行するには、まずDBを初期化して新しいPDOインスタンスを作成する必要があります。あなたが、これは前に行っていると仮定:

<?php 
// Check if add button active, start this 
if (isset($_POST['create'])) { 
$new=htmlspecialchars($_POST['newgroup']); 
$sql = "INSERT INTO contactgroups (status, gr_name) VALUES(1, : new)"; 
$stmt = $db->prepare($sql); 
$stmt->bindvalue(': new', $new); 
$stmt->execute(); 
$arr = $stmt->errorInfo(); 
echo $arr; 
echo "<meta http-equiv=\"refresh\" content=\"0;URL=groups.php\">"; 
} 
?> 

あなたはのtry/catch文で機能/コードビットをラップし、今後の誤差より深い洞察を得るためにPDOでの例外処理を有効にすることができます。

+0

おかげで、準備は間違いなくエラーの1つでした。今私は42000エラーコードを持っていますか? Googleの結果はありませんか? –

+0

:これは新しいものでした:)ありがとう –

関連する問題