🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

638閲覧

sqliteにユーザーから受け取った値を配列にし格納、出力したい

退会済みユーザー

退会済みユーザー

総合スコア0

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/02/04 00:39

前提・実現したいこと

ユーザーから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
にあるサンプルを一通り試してみました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/02/04 00:46

$dbはどこでどのように定義されたのでしょうか。 あと、ブラウザ出力しない情報をhtmlspecialcharsするのは間違いです
退会済みユーザー

退会済みユーザー

2021/02/04 01:48 編集

$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>'; } で、出力する予定です。
m.ts10806

2021/02/04 01:50

>$DB派からの辺巣です。書いていませんでした。$DB=NUL;のようにしています。 誤字がひどいです。変数名も今のコードと違う。プログラミングにおいては致命的です。 ひとまず質問に追記してください。 >出力する予定です いえですから、「出力するときに」しないと意味がありません。加工した値を保存していることになります。 あとは回答へ。
退会済みユーザー

退会済みユーザー

2021/02/04 10:05

なるほどありがとうございます。
guest

回答1

0

ベストアンサー

どこで誰が書いたのかわからない記事を参照するのではなく、
機能の話はPHPマニュアル確認すれば解決するように思います。
execが何をするのか、prepareが何をするのか。それぞれ引数に何を必要とするのか。
SQLite3

参考にされた記事はPDO使ってますしDBはMySQLですし、
参考にできないのでは。

エラーもきちんと読みましょう。
エラーメッセージの読み方と対処, 検索や質問の原則

あとコメントで別途書きましたが、ブラウザに出力しない情報をhtmlspecialcharsにかけるのは間違った実装です。出力するときにのみ使ってください。
理由はいくつかあります。

  • 保存するデータは加工してはいけない
  • データはブラウザ出力だけに使うとは限らない

投稿2021/02/04 00:50

編集2021/02/04 01:33
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問