php - mysql: 1 INSERT INTO 查询两个结果

标签 php mysql mysqli

我有一个表 user (id VARCHAR(5), name VARCHAR(30))

我以两种方式使用 INSERT INTO 查询:

1) 直接:

...
$sql="INSERT INTO user (id,name) VALUES ('00001','abcd');
...

---> 结果:id(00001), name(abcd).

这是正确的结果。

2)按功能:

function insert($id,$name)
{
    $sql="INSERT INTO user (id,name) VALUES ($id,$name)";
    ....
}

我使用这个函数有两种参数 一)

insert('00001','00123');

---> 结果:id(1), name(123)(所有零都被截掉了)。

二)

insert('00001','abcd');

---> 错误:“字段列表”中的未知列“abcd”。

我想问:为什么所有的零都被删掉了,为什么我使用字符串值时会出错。我怎样才能修复它以通过功能获得正确的结果。 非常感谢!

最佳答案

您从不费心引用您的值(value)观:

INSERT INTO user (id,name) VALUES ($id,$name)
                                   ^^^^^^^^^---here

所以查询变成了

INSERT INTO user (id, name) VALUES (1, abcd)

没有引号,abcd 被视为一个字段名,而不是一个值。由于您的表没有名为 abcd 的字段,因此您会收到错误消息。尝试:

INSERT INTO user (id,name) VALUES ($id, '$name')

作为短期修复(注意 $name 周围的 ' 引号)。长期修复:开始使用准备好的语句和/或占位符,这消除了对这种引用的需要。

关于php - mysql: 1 INSERT INTO 查询两个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20762905/

相关文章:

php - 处理混合 utf8 和 utf8mb4 MYSQLI & PHP

php - 处理 php 形式的撇号时遇到问题

mysql - 手动导入/导出或转储数据库

mysql - 使用 JOIN USING 查询时出错

java - SQL 准备语句抛出有关语法的错误

php - 如何检查MySQL中是否存在某行? (即检查 MySQL 中是否存在用户名或电子邮件)

PHP - 使用队列和 cron 作业还是直接处理请求?

php - 使用 PHP 脚本发布 ajax 请求

php - 比较大量相似文本的最简单方法是什么?

php - 仅可通过登录用户页面访问