代码之家  ›  专栏  ›  技术社区  ›  Melvin

向mysql提交多维数组

  •  0
  • Melvin  · 技术社区  · 5 年前

    我有一个带字段的mysql表:

    • 预览URL
    • 大URL

    我有一个提交的对象,结构如下:

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

    $urls.largeimg值必须插入到“大URL”中,并且

    $urls.preview_url值必须插入“preview_url”

    $urls.largeimg[0]必须与$urls放在同一个mysql表行中。preview[0],

    $urls.largeimg[1]与$urls放在同一行中。预览[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 回复  |  直到 5 年前
        1
  •  2
  •   LF-DevJourney    5 年前

    你应该这样做,

    $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,",");