簡単な掲示板を作っています。
ユーザーに入力された値をバインドし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で質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP MySql 画像を取得
-
PHPからHTMLへの変数の受け...
-
VBA で、スペースを含むファイ...
-
openCVのトラックバーについて
-
$a = ( $b == $c ) ? $d、 この...
-
name属性が全角の場合・・・
-
サブフォルダ内の全てのテキス...
-
ファイル名を変更してアップロ...
-
php+mysqlでの重複チェックにつ...
-
Flaskでサーバー立ち上げに関して
-
if文のなかで
-
PHPでユーザー情報を入力して簡...
-
<input type="hidden" >で配列...
-
PHPでCookieを使った訪問回数に...
-
PHPとpostgreSQL プルダウンの作成
-
($_POST['email']??"", ・・・...
-
PHPのエラーの解消法について教...
-
PHPの関数実行
-
PEARのQuickFormを用いて同一ペ...
-
セッションを使わずに遷移先画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Flaskでサーバー立ち上げに関して
-
phpで変数を使ってcopyできない
-
PHPからHTMLへの変数の受け...
-
ファイル名を変更してアップロ...
-
$_SESSIONに渡した後はそのまま...
-
テキストボックスの値を取得したい
-
openCVのトラックバーについて
-
scanfでの読み込み文字数制限
-
PHP MySql 画像を取得
-
アップロードファイル名の文字化け
-
Fortranでのファイル名操作につ...
-
ポインタ配列をfscanfで読み込...
-
WordのIDataObject::GetData呼...
-
UPDATEできない
-
C# 同じ処理をまとめたい
-
イタリア人がCatherineと聞いた...
-
mySQLのデータを多次元配列に格...
おすすめ情報