2012-09-26 83 views
0

可能重複:
How show Multidimensional Arrays be inserted into a MySQL table?爲什麼這個數組插入到我的MYSQL表中?

我有一個數組。該陣列是多維的,並且在被分解時工作得很好。然後,當我嘗試將數組插入到數據庫中時,每行都有多維數組。它不會進入。只有最後一行插入自己,但在嘗試這個不插入任何東西的新代碼後,我被卡住了。順便說一句,我已經失去了以前的代碼:

foreach ($links as $link) { 
    $output = array(
     "title"  => Titles($link), 
     "link"  => $link, 
     "description" => getMetas($link), 
     "keywords" => getKeywords($link) 
    ); 
    if (empty($output["description"])) { 
     $output["description"] = getWord($link); 
    } 
    $data[] = '"' . implode('" , "', $output) . '"'; 
} 
mysql_query("INSERT INTO search (title, description , keywords, link) 
    VALUES (" . $data . ")"); 
+2

我敢肯定,我已經看到了這個問題,至少3倍,在過去幾天中,來自不同的用戶帳戶發佈的...這是非常糟糕的編碼實踐。進入21世紀:使用帶庫MySQLi或PDO準備語句而非這一暴行糟糕的SQL構建與棄用MySQL的接口。 –

回答

2

因爲你指定的implode的結果$data[]$data即下一個可用的數組元素。在這種情況下,你要的implode結果分配給剛剛$data

如果打印生成的SQL,你可能只得到INSERT INTO ...... VALUES(Array)

0

mysql_query("INSERT INTO search (title, description , keywords, link) VALUES (" . $data . ")");需要是foreach環內的查詢。

 foreach ($links as $link) { 
$output = array(
    "title"  => Titles($link), //dont know what Titles is, variable or string? 
    "link"  => $link, 
    "description" => getMetas($link), 
    "keywords" => getKeywords($link) 
); 
if (empty($output["description"])) { 
    $output["description"] = getWord($link); 
} 
$data = '"' . implode('" , "', $output) . '"'; 
$success = mysql_query("INSERT INTO search (title, description , keywords, link) 
VALUES (" . $data . ")"); 
if($success) 
    echo $link . ' row inserted'; 
} 
+0

標題是一個字符串 –

+0

如果您打算連接'Titles'和變量'$ link',那麼'output'數組需要是'$ output = array( 「title」=>'Titles'。$ link, 「鏈接」=> $鏈路, 「說明」=> getMetas($鏈接), 「關鍵詞」=> getKeywords($鏈路) );' –

0

您的INPUT語法只填充一行。 要添加的所有行的一個MySQL查詢您可以按如下更改代碼:

$data = ""; 
foreach ($links as $link) { 
    $output = array(
     "title"  => Titles($link), 
     "link"  => $link, 
     "description" => getMetas($link), 
     "keywords" => getKeywords($link) 
    ); 
    if (empty($output["description"])) { 
     $output["description"] = getWord($link); 
    } 
    $data .= '("' . implode('", "', $output) . '"), '; // add each row in parenthesis. 
} 
mysql_query("INSERT INTO search (title, description , keywords, link) 
    VALUES " . $data); 

而且,你的MySQL的代碼已經全部棄用,你應該轉換過來,只要你能mysqli的。

相關問題