前提・実現したいこと
PHPから入力フォームでデータをDBに登録する機能を作っています。
元々MYSQLで作っていた物をPostgresql用に接続部分を変更しました。
その際に下記のエラーがでたのですが、ただのSQLエラーなのでしょうか?
①入力フォーム
②入力確認ページ
③投稿完了ページ ←ここでのエラー
発生している問題・エラーメッセージ
Fatal error: Uncaught PDOException: SQLSTATE[42703]: Undefined column: 7 ERROR: column "1" does not exist LINE 1: ...INTO hosts(user_id,name,shop,point,comment) VALUES("1","ロー... ^ in /app/2.php:26 Stack trace: #0 /app/2.php(26): PDOStatement->execute() #1 {main} thrown in /app/2.php on line 26
該当のソースコード
index.php <?php ini_set( 'display_errors', 1 ); ini_set( 'error_reporting', E_ALL ); // セッションの開始 session_start(); $user_id = htmlspecialchars($_SESSION['user_id'], ENT_QUOTES, 'UTF-8'); $name = htmlspecialchars($_SESSION['name'], ENT_QUOTES, 'UTF-8'); $shop = htmlspecialchars($_SESSION['shop'], ENT_QUOTES, 'UTF-8'); $point = $_SESSION['point']; $comment = htmlspecialchars($_SESSION['comment'], ENT_QUOTES, 'UTF-8'); // データベースに接続 $conn = new PDO ( "pgsql:host=localhost;port=5432;dbname=mydb;user=username;password=****" ); $conn ->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); $conn->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // データの追加 $sql = 'INSERT INTO hosts(user_id,name,shop,point,comment) VALUES("'.$user_id.'","'.$name.'","'.$shop.'","'.$point.'","'.$comment.'")'; $stmt = $conn -> prepare($sql); $stmt -> execute(); ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8" > <meta name="viewport" content="width=device-width, initial-scale=1"> <title>レビュー投稿完了submit-post-review</title> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css"> </head> <body> <div style="text-align:center;margin:50px 0;"> <h3>登録が完了しました</h3> <input style="margin-top:20px;" type="button" onclick="location.href='index.php'"value="トップページへ戻る"> <input type="button" onclick="location.href='post_new_review.php'"value="登録ページへ戻る"> </div> </body> </html>
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー