很多和我类似的帖子,没有一个是有效的。
有一个数组$data['date'], $data['name'], $data['value']。
正在尝试插入MySQL表MyValues (日期、名称、值)
我已经尝试了7-8种不同的方法,都没有奏效。想要像这样的东西
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行给出布尔值
发布于 2013-02-02 01:51:02
由于Values是保留字,因此不能将其原样用于表名。必须使用反引号将其括起来。同样,使用单引号命名列也是无效的,您也需要在那里使用反引号。
试试这个:
$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));发布于 2013-02-02 01:48:49
columnName不应该用单引号括起来,因为它们是标识符,而不是字符串文字。
INSERT INTO `Values` (Date,Index_Name,Index) VALUES (....)还有一件事,这里唯一需要用反引号括起来的标识符是tableName VALUES,因为它是一个保留关键字。
顺便说一句,如果变量的值来自外部,则查询容易受到SQL Injection的攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,您可以避免使用单引号将值引起来。
发布于 2013-02-02 02:14:50
尝试一下,使用$a++而不是$ee++
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]."' ")
}https://stackoverflow.com/questions/14652046
复制相似问题