Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中将数组字段插入mysql_Php_Mysql - Fatal编程技术网

在php中将数组字段插入mysql

在php中将数组字段插入mysql,php,mysql,Php,Mysql,当我将这种类型的数组值直接插入Mysql数据库时,我得到了如下错误 #1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法:第1行的“23:09Z,36840bd430637,Success,85.0,11457922,10.02,USD,X,M,59106737WV831” 我的查询是 INSERT INTO `transaction`(TIMESTAMP, CORRELATIONID, ACK, VERSION, BUILD, AMT, CURRE

当我将这种类型的数组值直接插入Mysql数据库时,我得到了如下错误

#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法:第1行的“23:09Z,36840bd430637,Success,85.0,11457922,10.02,USD,X,M,59106737WV831”

我的查询是

 INSERT INTO `transaction`(TIMESTAMP, CORRELATIONID, ACK, VERSION, BUILD, AMT, CURRENCYCODE, AVSCODE, CVV2MATCH, TRANSACTIONID) VALUES (2014-06-26T02:23:09Z, 36840bd430637, Success, 85.0, 11457922, 10.02, USD, X, M, 59106737WV831451U)
麦可德是

$columns = implode(", ",array_keys($result_array));
$escaped_values = array_map('mysql_real_escape_string', array_values($result_array));
$values  = implode(", ", $escaped_values);
echo $sql = "INSERT INTO `transaction`($columns) VALUES ($values)";
$res =mysql_query($sql);

我可以做哪些更改?

这里echo$sql的含义是什么?试试这种方法&你也可以先转义你的字符串

foreach($singleRow as $key=>$data) //for multiple rows
{
 if(isset($data)){
   $dataArray[$key] = is_string($data) ? mysql_real_escape_string($data) : $data;
   }
}

$tableName='transaction';
$keys = implode(',',array_keys($dataArray));
$data_values = ("'".implode("','",array_values($dataArray))."'");
$insertSql = "INSERT INTO ".$tableName." ($keys) VALUES ($data_values)";
$res =mysql_query($insertSql );

use mysqli_* and PDO anyway

首先,您应该转义列名(并非总是必需的):

然后,请记住,
mysql\u real\u escape\u string()
不会添加带引号的存储模块:

$vals = join(',', array_map(function($value) {
    return "'" . mysql_real_escape_string($value) . "'";
}, $result_array);

$sql = "INSERT INTO `transaction` ($cols) VALUES ($vals)";

最后,不推荐使用
mysql\uucode>函数,您应该继续使用PDO或mysqli。

首先,去掉
echo$sql…
中的
echo
,然后在值周围使用引号。这应该让你开始;-)为什么要扔掉mysql\u real\u escape\u string()
$vals = join(',', array_map(function($value) {
    return "'" . mysql_real_escape_string($value) . "'";
}, $result_array);

$sql = "INSERT INTO `transaction` ($cols) VALUES ($vals)";