php sql execute语句返回false

q5iwbnjs  于 2021-06-19  发布在  Mysql
关注(0)|答案(4)|浏览(415)

这个问题在这里已经有答案了

mysql insert query不支持where子句(27个答案)
两年前关门了。
我试图运行一个基本的sql语句,但是我不知道我做错了什么。上下文如下:
我有一个数据库名为:my\ u database
名为:users的表
两列:服务id哪个类型是bigint
和视频\u 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\u int\u max给我9223372036854775807
我知道sql注入,只是为了更清楚地把它删除了
我把每一个步骤都转储了,执行一个是唯一不起作用的
我在phpmyadmin控制台中运行了该语句,它告诉我:“在'where(service\u id='12345678910')'行1附近出现语法错误
我也搜索了where子句的用法,但我不明白是否可以把它放在insert语句中,我想我已经这样做了,而且成功了,我迷路了
提前谢谢

l5tcr1uw

l5tcr1uw1#

问题在于您编写insert查询的方式。insert查询不包含where子句。
您必须按以下方式更新查询:
插入到用户(视频\u id)值(?)

dfuffjeb

dfuffjeb2#

pdostatement::execute-执行准备好的语句。成功时返回true,失败时返回false。
所以对于你的情况,它返回false,因为在 INSERT 声明您将没有现有行来执行 WHERE 条款。
您需要以这种方式尝试插入一个具有两个值的行,或者使用updatequery根据现有行上的另一个值更新一个具有一个值的行。希望现在能消除你的疑虑:)

$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);
tvokkenx

tvokkenx3#

实际上,不能将where子句与insert to一起使用。
以下是一些答案,https://stackoverflow.com/a/11913305/7183227https来自mysql的http://stackoverflow.com/a/485057/7183227 insert where query

8fsztsew

8fsztsew4#

不应该在insert查询中使用where子句。所以,要么执行insert(它没有where),要么尝试更新where,您可以使用where子句。来这里看看https://phpdelusions.net/pdo_examples/insert 如果要插入记录,请单击此处https://phpdelusions.net/pdo_examples/update 如果您想更新和检查语法并正确执行它。:)

相关问题