PHP SQL执行语句返回False

时间:2018-10-21 16:54:13

标签: php mysql

我正在尝试运行基本的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语句中,我想我已经做到了,并且有效,我迷路了

预先感谢

4 个答案:

答案 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。 :)