首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向MySQL插入PHP数组失败

向MySQL插入PHP数组失败
EN

Stack Overflow用户
提问于 2013-02-02 01:44:26
回答 6查看 218关注 0票数 0

很多和我类似的帖子,没有一个是有效的。

有一个数组$data['date'], $data['name'], $data['value']

正在尝试插入MySQL表MyValues (日期、名称、值)

我已经尝试了7-8种不同的方法,都没有奏效。想要像这样的东西

代码语言:javascript
复制
for ($a=0;$a<10;$a++) {
    mysql_query("INSERT INTO MyValues('Date','Index_Name','Index')
       VALUES ($data['date'][$a] ,$data['name'][$a], $data['value'][$a])"
}

我也尝试过foreach,构建一个单独的字符串来给MySQL,等等。

获取此错误警告: mysql_error()期望参数1为资源,在第45行给出布尔值

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-02 01:51:02

由于Values是保留字,因此不能将其原样用于表名。必须使用反引号将其括起来。同样,使用单引号命名列也是无效的,您也需要在那里使用反引号。

试试这个:

代码语言:javascript
复制
$out = Array();
$esc = "mysql_real_escape_string";
foreach($data['date'] as $k=>$v) {
    $out[] = "('".$esc($data['date'][$k])."', '".$esc($data['name'][$k])."', "
       ."'".$esc($data['value'][$k])."')";
}
mysql_query("INSERT INTO `Values` (`Date`, `Index_Name`, `Index`) values ".implode(",",$out));
票数 0
EN

Stack Overflow用户

发布于 2013-02-02 01:48:49

columnName不应该用单引号括起来,因为它们是标识符,而不是字符串文字。

代码语言:javascript
复制
INSERT INTO `Values` (Date,Index_Name,Index) VALUES (....)

还有一件事,这里唯一需要用反引号括起来的标识符是tableName VALUES,因为它是一个保留关键字。

顺便说一句,如果变量的值来自外部,则查询容易受到SQL Injection的攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,您可以避免使用单引号将值引起来。

票数 3
EN

Stack Overflow用户

发布于 2013-02-02 02:14:50

尝试一下,使用$a++而不是$ee++

代码语言:javascript
复制
    for ($a=0;$a<10;$a++) {
mysql_query("INSERT INTO `Values` (`Date`,`Index_Name`,`Index`)
   VALUES ('".$data['date'][$a]."' ,'".$data['name'][$a]."', '".$data['value'][$a]."' ")
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14652046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档