8

PDOを使用してMySQLにレコードを挿入しようとしていますが、次のコードでsqlステートメントを確認できます。

<?php
    try{
        //include file myfunctions.php allows us to calls functions from it
        include ("myfunctions.php");
        //Assign function getConnection() from myfunctions.php to variable $db
        $db = getConnection();


        foreach($_POST['chk'] as $check_value)
        {
            $check = $check_value;
            $fav = "channel/item [title = \"$check\"]";
            $holidayDoc = simplexml_load_file('holidays.xml');
            $favourites = $holidayDoc->xpath($fav);

        foreach($favourites as $currentFav)
        {
            echo "{$currentFav->link}". "<br \>";
            echo "{$currentFav->title}". "<br \>";
            echo "{$currentFav->description}". "<br \>";
            echo "{$currentFav->pubDate} ". "<br \>";

            $sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
            VALUES (`John`, `$currentFav->link`, `$currentFav->pubDate`, `$currentFav->title`, `$currentFav->description`)";

            $db->exec($sql);
            $db = null;
        }
    }
}
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
?>

このコードを実行すると、次のエラーメッセージが表示されます。

SQLSTATE [42S22]:列が見つかりません:1054不明な列'John' in'field list'

これは間違いなくこの問題の簡単な解決策ですが、私はそれを見ることができないようです、誰かが私を正しい方向に向けることができますか?

4

5 に答える 5

20

これは、値にバックティックを使用しているためだと思います。それらを一重引用符に変更すると、うまくいくはずです

$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
            VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";

詳細については、一重引用符とバッククォートに関するこのSOの質問を参照してください。

于 2012-04-12T18:01:54.763 に答える
4

`はフィールドを指定するためのものであり、値には一重引用符を使用する必要があり'ます。

$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
        VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";
于 2012-04-12T18:02:06.407 に答える
3
 $sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
            VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";

フィールドにのみ`を使用し、値に'を使用します

于 2012-04-12T18:01:45.190 に答える
1

これに苦労している他の人にとって、これが私がこのエラーメッセージを見た理由と私がそれをどのように解決したかです:

  1. 私は共有コードベースに取り組んでいました(非常に多くの貢献者が働いています)
  2. コードに取り組んでいる他の誰かが、あなたが知らないうちに列を追加しました。
  3. コードをプルしましたが、昨日はすべて機能していましたが、今日はエラーメッセージが表示されました: "SQLSTATE [42S22]:Column not found:1054 Unknown column' column_name' in'field list'"

あなたがしなければならないのはあなたのテーブルに行きそして列を加えることです(私にとってこれをしたのはphpmyadminにありました)。

私が受け取ったエラーメッセージから、追加の列pricing_formulaが必要なのは'properties'テーブルであると推測できました。この列をDBに直接挿入するだけです。

参考までに、これは私のエラーメッセージでした:

"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'pricing_formula' in 
'field list' (SQL: select `site`.`name`, `domain`, `site`.`uuid`, 
`pricing_formula`, `client`.`uuid` as `clientRef` from `site` inner join 
`client` on `site`.`client_id` = `client`.`id` where `client_id` = 1 and 
`site`.`deleted_at` is null)"

これが誰かを助けることを願っています。誰かがまだこの問題を修正する方法を完全に知らないが、私の説明が彼らの問題を説明していると思うなら、連絡してください-私はあなたがそれを修正するのを手伝うように努めます。

また、情報として、これはAngularフロントエンドを備えたLaravelバックエンドプロジェクトでした。

于 2019-01-24T12:24:11.110 に答える
1

これでモデルを更新します:

public $timestamps = false;

これは、Eloquent関数がタイムスタンプであるクエリに「updatedat」プロパティを追加し、このエラーをスローするために発生しました。

于 2020-03-19T06:42:33.287 に答える