前提・実現したいこと
ユーザーからpostで受け取った値をsqliteに格納し、その後whileを使い入力された値をすべて出力する
機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Warning: SQLite3::prepare() expects parameter 1 to be string, array given in /home/exanple.com/hoge.php on line 45
該当のソースコード
php
1$image=htmlspecialchars($_POST['image'],ENT_QUOTES); 2 3$email=htmlspecialchars($_POST['email'],ENT_QUOTES); 4 5$name=htmlspecialchars($_POST['name'],ENT_QUOTES); 6 7$sex=htmlspecialchars($_POST['sex'],ENT_QUOTES); 8 9$main=htmlspecialchars($_POST['main'],ENT_QUOTES); 10 11$return=htmlspecialchars($_POST['thanks'],ENT_QUOTES); 12 13$detailage=htmlspecialchars($_POST['detailage'],ENT_QUOTES); 14 15$detailsex=htmlspecialchars($_POST['detailsex'],ENT_QUOTES); 16 17$state=htmlspecialchars($_POST['state'],ENT_QUOTES); 18 19 $sql = "INSERT INTO allwish (image, email, name,sex,main,thanks,detailage,detailsex,state) VALUES (:image, :email, :name,:sex,:main,:thanks,:detailage,:detailsex,:state)"; 20 $res=$db->exec($sql); 21 $variable=array(':image'=>$image, ':email'=>$email, ':name'=>$name ,':sex'=>$sex,':main'=>$main,':thanks'=>$thanks,':detailage'=>$detailage,':detailsex'=>$detailsex,':state'=>$state); 22 $res=$db->prepare($variable); 23 24 while( $row = $res->fetchArray() ) { 25 echo '<ul>'.'<li>'. $row[0] . $row[1] 26 .$row[2].$row[3].$row[4].$row[5].$row[6] 27 .$row[7].$row[8].$row[9].$row[10].'</li>'.'</ul>'; 28}
試したこと
https://qiita.com/harufuji/items/d033d3480a0c791973ae
にあるサンプルを一通り試してみました。
$dbはどこでどのように定義されたのでしょうか。
あと、ブラウザ出力しない情報をhtmlspecialcharsするのは間違いです
$DBは空です。書いていませんでした。$DB=NUL;のようにしています。
>>ブラウザ出力しない情報をhtmlspecialcharsするのは間違いです。
While( $row = $res->fetchArray() ) {
echo '<ul>'.'<li>'. $row[0] . $row[1]
.$row[2].$row[3].$row[4].$row[5].$row[6]
.$row[7].$row[8].$row[9].$row[10].'</li>'.'</ul>';
}
で、出力する予定です。
>$DB派からの辺巣です。書いていませんでした。$DB=NUL;のようにしています。
誤字がひどいです。変数名も今のコードと違う。プログラミングにおいては致命的です。
ひとまず質問に追記してください。
>出力する予定です
いえですから、「出力するときに」しないと意味がありません。加工した値を保存していることになります。
あとは回答へ。
なるほどありがとうございます。
回答1件
あなたの回答
tips
プレビュー