
簡単な掲示板を作っています。
ユーザーに入力された値をバインドしprepare、exce等をし最後にfetchArray()で出力したいのですが、エラーが出てしまいうまくできません。
方法を教えてください。
エラー
Warning: SQLite3::prepare(): Unable to prepare statement: 1, near "15": syntax error in
Uncaught Error: Call to a member function bindValue() on null in
コード
$name=$_POST['name'];
$main=$_POST['main'];
// 書き込み日時を取得
$now = date("Y/m/d H:i:s");
$db = new SQLite3("test.db");
$sql = "INSERT INTO tablename(view_name,message,post_date) VALUES(:name,:main,$now)";
$db->prepare($sql);
$res->bindValue(':name',$name,SQLITE3_TEXT);
$res->bindValue(':main',$main,SQLITE3_TEXT);
$res->execute();
$sql="SELECT * FROM tablename";
$res = $db->query($sql);
while( $row = $res->fetchArray() ) {
echo '<ul> ' . ' <li> '.$row[0].'</li>'. ' <li> '.$row[1].'</li>'.
' <li> '.$row[2].'</li>'. ' <li> '.$row[3].'</li>'. ' <li> '.$row[4].'</li>'.
'</ul>';}
No.2ベストアンサー
- 回答日時:
>"INSERT INTO tablename(view_name,message,post_date) VALUES(:name,:main,$now)";
文字列内に時刻を直接埋め込んでいるので、SQL文法エラーを起こしてるのでしょう。
post_dateの値もプレイスホルダー経由でバインドしてあげるとよいかと。view_nameやmessageもそうしてるのですから。
No.1
- 回答日時:
1. SQLite3::prepare の戻り値を正しく使いましょう
https://www.php.net/manual/ja/sqlite3.prepare.php
2. SQL 文法違反しているので $now も bindValue で渡しましょう
https://www.php.net/manual/ja/sqlite3stmt.bindva …
3. 保守性の観点から SELECT 対象は "*" でなく列名を列挙しましょう
4. スクリプト注入の危険を避けるため $row[?] はエスケープして表示しましょう
https://www.ipa.go.jp/security/awareness/vendor/ …
https://www.php.net/manual/ja/function.htmlspeci …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
PHP5でsimple_xml_load_fileす...
-
POSTデータのNAME属性をVALUEに...
-
CodeIgniter/set_value()
-
ボタンをクリックでPHP文を実行
-
チェックボックスのGETでの受け...
-
PHPの初心者です。現在チェック...
-
フォームでのリセットを使う方法
-
フォーム送信後の更新ボタンで...
-
ラジオボタンをsessionで使いたい
-
セッションを使わずに遷移先画...
-
phpでのボタン押下の活性・非活...
-
フォームへの前回入力値をクリ...
-
入力フォーム→確認画面→送信画...
-
POSTで送りたい
-
検索時の選択内容を保持する方法
-
なぜ、unexpected T_VARIABLEに...
-
セレクトしたときに全て初期状...
-
チェックボックスの必須項目指定
-
テキストリンクをPOST送信したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$_SESSIONに渡した後はそのまま...
-
Flaskでサーバー立ち上げに関して
-
テキストボックスの値を取得したい
-
php+mysqlでの重複チェックにつ...
-
POSTの項目に追加
-
ファイル名を変更してアップロ...
-
VBA で、スペースを含むファイ...
-
name属性が全角の場合・・・
-
php、sqlite3にデーター追加で...
-
PHP5でsimple_xml_load_fileす...
-
PHP等を用いて在庫数を表示・管...
-
Smartyのforeachのnameに変数を...
-
sqlite文字列を格納、出力
-
scanfでの読み込み文字数制限
-
CakePHP テーブル名カラム名の...
-
あるカラム内の最初の一文字と...
-
DB接続やInsertでのエラーを画...
-
Fortranでのファイル名操作につ...
-
トレイトの変数の扱い方
-
if文のもっとスマートな書き方
おすすめ情報