2016-09-07 7 views
-1

現在、私のコードをMySQLからPDOに変換するプロセスが進行中ですが、変数を渡す際に問題が発生しています。変数の内容を編集して、起こっていることを正確に把握しています。PDOでHTMLを挿入する

$status = 'Pending'; 
$stmt = $db->prepare("INSERT INTO 
cusbuilder_sites(userid,name,imgurl,url,explain,status,incustom) VALUES 
(:userid,:campname,:imgurl,:targeturl,:explain,:status,:incustom)"); 

$explain = '<p>Testing Input</p>'; 
$stmt->bindParam(':userid', $username); 
$stmt->bindParam(':campname', $_POST['campname']); 
$stmt->bindParam(':imgurl', $_POST['imgurl']); 
$stmt->bindParam(':targeturl', $_POST['targeturl']); 
$stmt->bindValue(':explain', $explain, PDO::PARAM_STR); 
$stmt->bindParam(':status', $status); 
$stmt->bindParam(':incustom', $_POST['incustom']); 
$stmt->execute(); 

は今、これは私が取得していますエラーです:

:メッセージでキャッチされない例外「PDOException」「SQLSTATE [42000]:構文エラーまたはアクセス違反:1064あなたは、あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文が「説明、ステータス、不得手」の近くで使用されるようにしてください)VALUES( 'myuserid'、 'testing12'、 '' at line 1 '

$ explain変数にはHTMLコードが含まれていますが、pタグを削除するとうまく動作しますが、実際にMySQLで行ったようにHTMLをデータベースに格納する必要があります。

この質問に対する回答を読んだことがあります私の前のコードでは、明らかにPDOで使えないmysql_real_escape_stringを使っていたので、変数にHTMLを渡してPDOを使ってデータベースに挿入する方法を知りたいのですが?

「bindParamの代わりにbindValueを使う」と答えようとしている人には、私はすでにこれを行い、エラーは同じであることがわかります。

答えて

4

これはHTMLとは関係ありません。 SQLクエリ自体は無効です。 explainreserved wordです。

INSERT INTO `cusbuilder_sites` 
    (`userid`,`name`,`imgurl`,`url`,`explain`,`status`,`incustom`) VALUES 
    (:userid,:campname,:imgurl,:targeturl,:explain,:status,:incustom) 
+0

は今、別のエラーを取得:識別子としてそれらを指定する(MySQLを想定し、他の文字は、他のデータベースで使用することができる)バックティックであなたの識別子を囲み致命的なエラー:メッセージ「SQLSTATEでキャッチされない例外「PDOException」[ 42000]:構文エラーまたはアクセス違反:1064 SQL構文にエラーがあります。 '' userid'、 '' name''、 '' imgurl''、 '' url''、 '' explain''、 '' status''、 '' incustom'の近くで使用する正しい構文についてはMySQLサーバのバージョンに対応するマニュアルをチェックしてください)VALUES( 'myuserid '1行目' – jay32mcr

+0

@ jay32mcr:使用しているクエリを表示できますか? – David

+0

すべてのコードはすでに上にあります。ユーザーIDは既に割り当てられており、POST変数は ':フォームは、しかし、私は私が「説明」取るならば、それはとてもそこフォームに問題はありませんが、念のために動作することを言及しなかった ' CKeditorを使用しているため、HTMLを送信する必要があるのです。 – jay32mcr