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不明な列 'ジョン'が 'フィールドリスト'にあります
これは間違いなくこの問題の簡単な解決策ですが、私はそれを見ることができないようです、誰かが私を正しい方向に向けることができますか?
これは、価値観にバックティックを使用しているためだと思います。それらを一重引用符に変更してください。
$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`)
VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";
詳細については、 これにSO単一引用符とバッククォートに関する質問 を参照してください
$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`)
VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";
フィールドのみに `を使用し、値に 'を使用します
`はフィールドを指定するためのものであり、一重引用符を使用する必要があります'
は値です。
$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`)
VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";
これに苦労している他の人にとって、これが私がこのエラーメッセージを見た理由と私がそれを解決した方法です:
あなたがしなければならないのはあなたのテーブルに行って列を追加することだけです(私にとってこれは私がこれをしたのはphpmyadminでした)。
受け取ったエラーメッセージから、追加の列pricing_formulaが必要なのは「プロパティ」テーブルであると推測できました。この列を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)"
これが誰かを助けることを願っています。誰かがまだこの問題を修正する方法を完全に知らないが、私の説明が彼らの問題を説明していると思うなら、連絡してください-私はあなたがそれを修正するのを手伝うように努めます。
また、参考として、これはLaravelバックエンドプロジェクトであり、Angularフロントエンドです。
これでモデルを更新します:
public $timestamps = false;
これは、Eloquent関数がタイムスタンプであるクエリに「updatedat」プロパティを追加し、これがこのエラーをスローするために発生しました。