gpt4 book ai didi

php - 帮我调试我的 SQL INSERT,好吗?

转载 作者:行者123 更新时间:2023-12-01 00:31:32 25 4
gpt4 key购买 nike

我正在从 Twitter 查询 API 中提取一些数据,并通过 PHP 像这样解析它:

    $i =0;
foreach ($tweetArray->results as $tweet) {
$timeStamp = strtotime($tweet->created_at);
$tweetDateTime = date('m-d-Y H:m:s', $timeStamp);
if($i > 0){
$SQL .= ',';
}
$SQL .= "(". $tweet->id .",'" . $tweet->from_user ."','". addslashes($tweet->profile_image_url) . "','". addslashes($tweet->text). "','" . $tweetDateTime ."')";
$i++;
}
$SQL .= " ON DUPLICATE KEY UPDATE 1=1";

这给我留下了如下所示的 SQL 语句:

INSERT 
INTO
tblTwitterSubmit (tweetId, twitterAuthor, authorAvatar, tweetText, tweetDateTime)
VALUES
(111,'name','http://url.com','a string of text','03-04-2011 13:03:09'),
(222,'anothername','http://url.com','another tweet','03-04-2011 12:03:51')
ON DUPLICATE KEY UPDATE 1=1;

不幸的是,我收到以下错误:您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“1=1”附近使用的正确语法

编辑:1=1 应该什么都不做。推文不会更改,因此如果我出于任何原因将同一个推文拉回两次,什么都不会发生,但也不会引发重复键错误。

重新编辑:这个问题似乎与我使用的关键字段有关,这是推特分配的推文 ID。

无论如何,我都重构了代码,因为很明显我在文章中读到的“真正好主意”并非如此。我现在在 for 循环中包含了一个 PDO 提交,所以我只提交了一堆而不是一个长的 sql 字符串。

希望这是更好的做法。

将其打开几分钟,希望得到一些反馈,看是否可以这样做。

最佳答案

ON DUPLICATE KEY UPDATE 需要一个列名,类似这样,假设 tweetId 是获得重复项的键列。

ON DUPLICATE KEY UPDATE tweetId=tweetId+1

您的 1=1 实际上没有做任何事情。

关于php - 帮我调试我的 SQL INSERT,好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5197844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com