2017-06-27 18 views
-1

PHPとMySQLを使用して、フォームからのクエリをデータベースに挿入する際にエラーが発生しました。エラーが列の数が行1の値の数と一致しません。すべてのアドバイス

列のカウントはあなたには、いくつかの単一引用符が欠落している

$sql = "INSERT INTO Jobs (
    JobSubject, 
    JobCompany, 
    JobSalary, 
    JobLocation, 
    JobDate, 
    JobCat, 
    JobPostBy 
) VALUES (
    '" . mysql_real_escape_string($_POST['JobSubject']) . "', 
    " . mysql_real_escape_string($_POST['JobCompany']) .", 
    " . mysql_real_escape_string($_POST['JobSalary']) .", 
    " . mysql_real_escape_string($_POST['JobLocation']) .", 
    NOW(), 
    " . mysql_real_escape_string($_POST['JobCat']) . ", 
    " . $_SESSION['userId'] . " 
)"; 
+0

と '$のsql'の結果の値は何ですか?つまり、実行しようとしている実際のクエリはどのようなエラーを生成しますか? – David

+1

フィールドを含むテーブル構造を表示してください – Roljhon

+1

mysql_を使用しないでください。既知のセキュリティリスクであり、PHP 7で削除されました。 – Styphon

答えて

-1

行1で、値の数と一致していないです。

ここでは正しい構文です:

$sql = " 
    INSERT INTO Jobs (
     JobSubject, 
     JobCompany, 
     JobSalary, 
     JobLocation, 
     JobDate, 
     JobCat, 
     JobPostBy 
    ) 
    VALUES(
     '" . mysql_real_escape_string($_POST['JobSubject']) . "', 
     '" . mysql_real_escape_string($_POST['JobCompany']) . "', 
     '" . mysql_real_escape_string($_POST['JobSalary']) . "', 
     '" . mysql_real_escape_string($_POST['JobLocation']) . "', 
     NOW(), 
     '" . mysql_real_escape_string($_POST['JobCat']) . "', 
     '" . $_SESSION['userId'] . "' 
    ) 
"; 
+0

整数(userIdなど)には引用符は必要ありません。 – Styphon

+0

@Styphonテーブルスキーマは提供されていないので、userIdの様子は分かりませんので、安全な側に置いて、一重引用符を追加する方が良いです – mufax

+0

または、キャストするだけです。 '(int)$ _SESSION ['userId'] '、それは整数になることを保証します。 – Styphon

関連する問題