【发布时间】:2017-03-20 18:57:50
【问题描述】:
这个 php 插入代码是我的 php 脚本的一部分,用于从 csv 文件导入值。我想通过 csv 文件中设置的其他值插入 fld_id。 csv内容示例:123456789,title,description where:
data[0] is 123456789
data[1] is title
data[2] is description
如果insert运行在mysql客户端,值是正确insert,但是从php页面返回错误:fld_idcat不能为null。
这是部分php代码:
/*other code*/
do {
if ($data[0]) {
mysql_query("
INSERT INTO table_imports
(
fld_username,
fld_idcat,
fld_title,
fld_desc,
fld_userimport
)
VALUES
(
'$Username',
(select id_cat from table_category where id_cat_random = '".addslashes($data[0])."'),
'".addslashes($data[1])."',
'".addslashes($data[2])."'
'userImport'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
header('Refresh: 6; URL=finishPage.php');
die(mysql_error());
/*other code*/
如何更正此 php 插入以在 select 内的变量 $data[0] 处传递值 123456789?
我希望能解释一下我的问题
谢谢
【问题讨论】:
-
确切的错误信息是什么?这看起来不像是 MySQL 错误。您的代码甚至不检查来自 MySQL 的错误。
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪一个最适合您。 -
您不知道哪里出了问题,因为您没有检查代码中的错误。永远不要假设代码总是能完美运行。使用
mysql_error()从数据库中获取详细的错误消息。 -
我已经更新了这个问题。请再读一遍。错误是这样的:列'fld_idcat'不能为空。列 fld_idcat 在 mysql 表“not null”上配置。该脚本在没有“.addslashes($data[0])”的情况下工作正常。但使用“.addslashes($data[0])”。返回错误。