很多帖子与我的相似,但都不起作用。
拥有数组$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行给出布尔值
答案 0 :(得分:3)
columnName不应该用单引号换行,因为它们是标识符而不是字符串文字。
INSERT INTO `Values` (Date,Index_Name,Index) VALUES (....)
还有一件事,这里唯一需要用反引号换行的标识符是tableName VALUES
,因为它是一个保留关键字。
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:0)
由于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));
答案 2 :(得分:0)
试试这个,使用$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]."' ")
}
答案 3 :(得分:-1)
首先,只需将PDO / mysqli与准备好的语句一起使用,这样你就不会遇到任何问题。
这将解决它(具有反向标记的列名而不是单引号和转义数据):
for ($a=0;$a<10;$a++) {
mysql_query("INSERT INTO `Values` (`Date`,`Index_Name`,`Index`)
VALUES ('".mysql_real_escape_string($data['date'][$a])."' ,
'".mysql_real_escape_string($data['name'][$a])."',
'".mysql_real_escape_string($data['value'])[$a]."'");
}
尽量避免使用index
和values
等列的保留名称。
答案 4 :(得分:-1)
首先,我相信您希望引用您的查询值,因此结果是“值”而不仅仅是值。例如:
mysql_query("INSERT INTO Values(Date,Index_Name,Index) VALUES ('$data['date'][$a]' ,'$data['name'][$a]', '$data['value'][$a]');
如果您正在进行多项查询,请执行以下操作:
$q = "INSERT INTO Values(Date,Index_Name,Index) VALUES ";
for {
// Add to the string here for each insert item
}
mysql_query($q);
此外,请开始逐步淘汰PHP的mysql_ *库,转而使用mysqli或PDO。
答案 5 :(得分:-2)
这有效:
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]."')"
}