我正在尝试运行基本的SQL语句,但是我无法弄清楚自己在做什么错。这里是上下文:
我有一个名为: my_database
的数据库
名为:用户
的表
两列: service_id ,其类型为 BIGINT
和 video_id ,其类型为 varchar(20)
这是我的代码:
$video_id = "chartext";
$service_id = 12345678910;
$bdd = new PDO("mysql:host=127.0.0.1;dbname=moods_db", "user", "pass");
$query = $bdd->prepare("INSERT INTO users(video_id) VALUES (?) WHERE service_id = $service_id");
$query->execute([$service_id]);
var_dump($req->execute([$video_id]));
// which gives me false
一些信息: 我的PHP_INT_MAX给了我9223372036854775807
我知道SQL注入,只是为了更清楚地将其删除了
我var_dump了每个步骤,而执行步骤是唯一不起作用的步骤
我在phpmyadmin控制台中运行了该语句,它告诉我:“'WHERE(service_id ='12345678910')'第1行附近的语法错误
我还搜索了WHERE子句的用法,但是我不知道是否可以将其放在INSERT语句中,我想我已经做到了,并且有效,我迷路了
预先感谢
答案 0 :(得分:0)
PDOStatement :: execute -执行准备好的语句。成功返回 TRUE ,失败返回 FALSE 。
因此对于您的情况,它返回 FALSE ,因为在INSERT
语句中,您将没有 existing 行来进行WHERE
条款。
您需要尝试以这种方式插入具有两个值的一行,或者使用UPDATE查询以基于现有行中另一个值的一个值来更新一行。希望它现在消除您的疑虑:)
$video_id = "chartext";
$service_id = 12345678910;
$bdd = new PDO("mysql:host=127.0.0.1;dbname=moods_db", "user", "pass");
$sql = "INSERT INTO users(video_id, service_id) VALUES (?,?)";
$array = array($video_id , $service_id );
$sth = $bdd->prepare($sql);
$sth->execute($array);
var_dump($sth);
答案 1 :(得分:0)
实际上,您不能在INSERT TO中使用WHERE子句。
以下是一些答案,https://stackoverflow.com/a/11913305/7183227 https://stackoverflow.com/a/485057/7183227
来自MySQL Insert Where query
答案 2 :(得分:0)
问题在于您编写INSERT查询的方式。 INSERT查询不包含where子句。
您必须按以下方式更新查询:
INSERT INTO users(video_id)VALUES(?)
答案 3 :(得分:-1)
您不应在INSERT查询中使用WHERE子句。因此,要么执行INSERT(它没有WHERE),要么尝试执行UPDATE(可以使用WHERE子句)。如果您要插入记录,请访问https://phpdelusions.net/pdo_examples/insert,如果要更新并检查语法并正确执行,请访问https://phpdelusions.net/pdo_examples/update。 :)