【发布时间】:2021-05-06 02:23:59
【问题描述】:
所以,我尝试将一些数据插入表中,我从 GET 或另一个 SQL 查询中获取以前的数据(我的数据库由 INT 和 TEXT 组成,所以我认为那里没有问题)。 我有一个问题
$sql2 = "INSERT INTO orders (USER_NAME, USER_ID, ARTIST_ID, ARTIST_NAME, PRICE, DESCRIPTION, COMMENTS)
VALUES ('$user_name','$user_id','$artist_id','$artist_name','$price','$description','$comments')";
这个$sql2的回声如下
INSERT INTO orders (USER_NAME, USER_ID, ARTIST_ID, ARTIST_NAME, PRICE, DESCRIPTION, COMMENTS) VALUES ('myname','1',''1'','Actual Name','19.99','test','tst2')
但是,当我这样做时
if ($conn->query($sql2) === TRUE) {
$conn->close();
echo "success";
exit();
} else {
$conn->close();
echo "failed";
}
我得到了failed 打印。但是如果我把$sql2改成
VALUES ('test','test','test','test','test','test','test')";
查询已成功插入到我的数据库中(除了变成 0 的 int 值)。有人能告诉我为什么会这样吗?
【问题讨论】:
-
...但是您的测试
data也无效...数字字段user_id = 'test', artist_id = 'test', price = 'test'是实数吗?当然,这些值设置为 0。使用参数化查询来避免查询引用。如果你的任何价值观有一个,它就会破裂。更不用说,您所面临的 SQL 问题是完全开放的。 -
第二个 1 用两个单引号括起来 - ...('myname','1',''1'','Actu... 这是复制+粘贴错误吗?
-
@garethhumphriesgkc ... 不错!我忽略了这一点。
-
@garethhumphriesgkc 你说得对,这不是复制粘贴错误……我忽略了这一点。我使用
$_SESSION[]得到了那个特定的变量,所以我猜这就是原因。 -
另外,我不知道为什么会这样。如果我回显
echo $_SESSION['ID'];,那么我得到 1 没有任何引号。如果我这样做$user_id = preg_replace('/[^0-9]/', '', $_SESSION['ID']);sql 查询仍然失败。
标签: php mysql sql sql-insert