我正在尝试使用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'中 '字段列表'
这无疑是解决这个问题的一个简单方法,但我似乎无法看到它,有人能指出我正确的方向吗?
答案 0 :(得分:18)
我相信这是因为你正在为你的价值观使用反引号。将它们更改为单引号,你应该是好的
$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`)
VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";
如果您想了解更多信息,请参阅to this SO question about single quotes versus backticks
答案 1 :(得分:3)
$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`)
VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";
仅对字段使用`并使用'作为值
答案 2 :(得分:3)
`用于指定字段,您必须使用单引号'
作为值。
$sql = "INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`)
VALUES ('John', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";
答案 3 :(得分:1)
对于其他为此感到挣扎的人,这就是为什么我看到此错误消息以及如何解决的原因:
所有您需要做的就是进入表并添加列(对我而言,我是在phpmyadmin中这样做的。)
从我收到的错误消息中,我可以推断出它是“属性”表,需要附加的列price_formula。只需将此列直接插入数据库即可。
作为参考,这是我的错误消息:
"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后端项目。
答案 4 :(得分:0)
以此更新您的模型:
public $timestamps = false;
发生这种情况是因为Eloquent函数向您的查询添加了“ updated at”属性(它是时间戳),这将引发此错误。