可能重复:
How show Multidimensional Arrays be inserted into a MySQL table?
我有一个数组。该数组是多维的,并且在内爆方面工作正常。然后,当我尝试将数组插入数据库时,每行都有一个多维数组。它不会进入。只有最后一行插入自己,但在尝试这个没有插入任何内容的新代码后,我被卡住了。顺便说一句,我丢失了以前的代码:
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 . ")" );
答案 0 :(得分:2)
因为您要将implode
的结果分配给$data[]
,即$data
的下一个可用数组元素。在这种情况下,您希望将implode
的结果分配给$data
。
如果您打印生成的SQL,您可能只会获得INSERT INTO ...... VALUES(Array)
。
答案 1 :(得分: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';
}
答案 2 :(得分: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。