如何将转换后的数组插入mysql? (PHP)

时间:2010-02-27 01:37:23

标签: php mysql json

我已将json数据转换为数组,但现在我想将其插入到我的数据库中,我不断获取数组

这是代码

    for ($i=0; $i<=$checking; $i++) {

    $catid = $ids[$i];
    $catname = $names[$i];
    $catapps = $apps[$i];
    $caturl = $iconurls[$i];

$query = "INSERT INTO cat VALUES ('".$catid."','".mysql_real_escape_string($catname)."','".$catapps."','".mysql_real_escape_string($caturl)."')";
mysql_query($query);



};

4 个答案:

答案 0 :(得分:1)

我想建议您使用AdoDB更好地将数据插入/更新到MySQL中。使用AutoExecute插入/更新时,AdoDB会自动转义。这是一个用法示例:

$catid = $ids[$i];
$catname = $names[$i];
$catapps = $apps[$i];
$caturl = $iconurls[$i];
//set table name
$table_name = 'cat';
//set field values
$data = array (
  'catid' => $catid,
  'catname' => $catname,
  'catapps' => $catapps,
  'caturl' => $caturl
);
//do insert
$result = $adodb->AutoExecute($table_name, $data, 'INSERT');

请注意,$data数组中使用的密钥是MySQL中cat表中的列名,因此请根据数据库中的列名进行调整。

如果要将数组插入mysql列,我建议您在插入时使用serialize,然后在获取数据时,在显示或处理之前使用unserialize

答案 1 :(得分:0)

哪一列包含'Array'? 尝试print_rvar_dump $catid$catname$catapps$caturl

如果您有'Array',可能是因为其中至少有一个是数组。当php尝试将一个数组转换为一个String时(例如,当用字符串将其转换)时,它会转换为字符串'Array'

答案 2 :(得分:0)

通过连接值来撰写单个查询。可见:
(为了清楚起见,有一点重组)

 $query = "INSERT INTO cat VALUES ";

 for ($i=0; $i<=$checking; $i++) 
 {
    if ($i > 0)
        $query .= ',';
    $catid = intval($ids[$i]);
    $catname = mysql_real_escape_string($names[$i]);
    $catapps = mysql_real_escape_string($apps[$i]);
    $caturl = mysql_real_escape_string($iconurls[$i]);
    $query .= "($catid, '$catname', '$catapps', '$caturl')";
 }
 mysql_query($query);

答案 3 :(得分:0)

使用PDO和准备好的声明:

try {

   // connect to the DB
   $dbh = new PDO('mysql:host=localhost;dbname=my_db','user','password');

   // prepare the query : it will be faster and safer
   $query = $dbh->prepare("INSERT INTO cat VALUES (id, name, app, url) VALUES (:id, :name, :app, :url)");


   // tell which vars will be used to fill the query
   $query->bindParam(':id', $catid);
   $query->bindParam(':name', $catname);
   $query->bindParam(':app', $catapps);
   $query->bindParam(':url', $caturl);

   // execute your stuff
   for ($i = 0; $i <= $checking; $i++) {

        $catid = $ids[$i];
        $catname = $names[$i];
        $catapps = $apps[$i];
        $caturl = $iconurls[$i];

        $stmt->execute();

   };

} catch(PDOException $ e){             //处理连接错误 }

$ dbh = NULL;