提交多维数组到mySQL

时间:2019-09-09 01:07:50

标签: php mysql sql arrays multidimensional-array

我有一个包含以下字段的mySQL表:

  • preview_url
  • large_url

我有一个具有以下结构的对象:

var $urls = {largeImg:[],preview:[]}

$ urls.largeImg值必须插入“ large_url”和

$ urls.preview_url值必须插入到'preview_url'

$ urls.largeImg [0]必须与$ urls.preview [0]放在同一MySQL表行中,

$ urls.largeImg [1]与$ urls.preview [1]放在同一行,依此类推。

我的php:

$urls = $_POST['urls'];

function cache_urls($urls){
global $db;


foreach($urls as $url){
    $sql = "INSERT INTO cache ";
    $sql .= "(preview_url, large_url) ";
    $sql .= "VALUES (";
    $sql .= "'" . db_escape($db, $url['preview']) . "', ";
    $sql .= "'" . db_escape($db, $url['largeImg']) . "'";
    $sql .= ");";

    $result = mysqli_query($db, $sql);
}

然后我也尝试了这个:

foreach($urls as $url){
    foreach($url as $key => $value){
        $sql = "INSERT INTO cache ";
        $sql .= "(preview_url, large_url) ";
        $sql .= "VALUES (";
        if($key==="preview"){
            $sql .= "'" . db_escape($db, $value) . "', ";
        }
        if($key==="largeImg"){
            $sql .= "'" . db_escape($db, $value) . "'";
        }

        $sql .= ");";

        $result = mysqli_query($db, $sql);
    }       
}

因此,我认为SQL位肯定是错误的,但我的确掌握了一切!任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

您应该这样做,

$sql = "INSERT INTO cache (preview_url, large_url) values";
foreach($urls["largeImg"] as $index => $large_url){
    $preview_url = $urls["preview"][$index];
    $sql .= "('" . db_escape($db,$preview_url) . "','" . db_escape($db,$large_url) . "'),";
}
$sql = rtrim($sql,",");