2
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi cần chèn mảng sau vào bảng MySQL với tên cột, tiêu đề, URL, logo. Tôi đã tạo bảng và viết một truy vấn để chuyển mảng. Nhưng nó đã chèn dòng cuối cùng của mảng và để lại ... làm ơn giúp tôi ... đây là mảng của tôi
$con = mysql_connect["localhost","",""];
if [!$con]
{
die['Could not connect: ' . mysql_error[]];
}
mysql_select_db["media", $con];
$featured = array[];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$sql = "INSERT INTO featured";
$sql .= " [`".implode["`, `", array_keys[$featured]]."`]";
$sql .= " VALUES ['".implode["', '", $featured]."'] ";
$result = mysql_query[$sql] or die[mysql_error[]];
Hỏi ngày 28 tháng 9 năm 2012 lúc 16:48Sep 28, 2012 at 16:48
4
Bạn cần lặp qua mảng $featured
:
$con = mysql_connect["localhost","",""];
if [!$con]
{
die['Could not connect: ' . mysql_error[]];
}
mysql_select_db["media", $con];
$featured = array[];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
foreach [$featured as $array] {
$sql = "INSERT INTO featured";
$sql .= " [`".implode["`, `", array_keys[$array]]."`]";
$sql .= " VALUES ['".implode["', '", $array]."'] ";
$result = mysql_query[$sql] or die[mysql_error[]];
}
Hoặc để chèn một số bản ghi vào một truy vấn như đã đề xuất:
$sql = "INSERT INTO featured";
$sql .= " [`".implode["`, `", array_keys[$featured[0]]]."`] VALUES"; // make sure that $featured contains the same number of key=>value pairs
foreach [$featured as $array] {
$sql .= " ['".implode["', '", $array]."'],";
}
$sql = substr[$sql,0,-1]; // remove last comma
$result = mysql_query[$sql] or die[mysql_error[]];
Vui lòng đọc trên SQL tiêm.
Đã trả lời ngày 28 tháng 9 năm 2012 lúc 16:53Sep 28, 2012 at 16:53
RationalBossrationalBossrationalboss
5.3323 Huy hiệu vàng29 Huy hiệu bạc49 Huy hiệu đồng3 gold badges29 silver badges49 bronze badges
4
Bạn có thể sử dụng truy vấn multiple insert
như INSERT INTO [column1, column2,...] VALUES ['row1a', 'row1b'..], ['row2a', 'row2b'..]...
$featured = array[];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$sql = "INSERT INTO featured ";
$sql .= " [`".implode["`, `", array_keys[$featured]]."`]";
$sql .= " VALUES ";
for[ $i=0; $i < count[$featured]; $i++] {
$sql .= "['". implode["', '", $featured[$i]]."'] ";
if[ $i < [count[$featured] - 1] ]
$sql .= ", ";
}
Nhìn thấy nó trong hành động ở đây.
Đã trả lời ngày 28 tháng 9 năm 2012 lúc 17:01Sep 28, 2012 at 17:01
Teena Thomasteena ThomasTeena Thomas
5.1131 Huy hiệu vàng12 Huy hiệu bạc17 Huy hiệu đồng1 gold badge12 silver badges17 bronze badges
Như Hakra đã đề xuất, bạn có thể chèn nhiều hàng bằng một truy vấn MySQL bằng cách thực hiện thay đổi sau mã của bạn:
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$featured[] = array['name' => '', 'title' => '', 'url' => '', 'logo' => ''];
$sql = "INSERT INTO featured";
$sql .= " [`".implode["`, `", array_keys[$featured]]."`]";
$sql .= " VALUES "; // moved parenthetical grouping to foreach loop below
foreach [$featured as $feature] {
$sql .= "['".implode["', '", $featured]."'], "; // note comma after each parenthetical grouping
}
$sql = substr[$sql, 0, -2]; // we'll cut off the last ", " added to the string
$result = mysql_query[$sql] or die[mysql_error[]];
Đã trả lời ngày 28 tháng 9 năm 2012 lúc 17:05Sep 28, 2012 at 17:05
Đây là một công việc cho PDO! Bạn nên sử dụng pdo hoặc mysqli thay vì mysql_, nhưng đó là một cuộc thảo luận hoàn toàn khác.
Những gì bạn muốn làm là thế này:
// ========================================================
// Define insert rows. Note the colon before each key name.
// That's there because we'll be passing this to a PDOStatement as bound
// parameters. Depending on the logic of your program there may be different
// ways you want to handle this.
// ========================================================
$featured = array[];
$featured[] = array[':name' => '', ':title' => '', ':url' => '', ':logo' => ''];
$featured[] = array[':name' => '', ':title' => '', ':url' => '', ':logo' => ''];
$featured[] = array[':name' => '', ':title' => '', ':url' => '', ':logo' => ''];
$featured[] = array[':name' => '', ':title' => '', ':url' => '', ':logo' => ''];
// ========================================================
// Create the PDO object. Define your query and prepare a statement. I use the
// INSERT SET syntax rather than the INSERT VALUES syntax purely for readability.
// Either will work with PDO. Also, most programmers don't set the query_str as a
// separate variable as I do here. I find it improves readability.
// ========================================================
$db_obj = new PDO [/*connection params go here */];
$query_str = "INSERT INTO featured SET
name = :name,
title = :title,
url = :url,
logo = :logo";
$query_obj = $db_obj->query [$query];
// ========================================================
// Loop through your rows in $featured and execute the SQL query, passing the
// new row of parameters each time.
// ========================================================
foreach [$featured as $row] {
$query_obj->execute [$row];
}
Đã trả lời ngày 28 tháng 9 năm 2012 lúc 17:10Sep 28, 2012 at 17:10
David Grenierdavid GrenierDavid Grenier
1.1961 Huy hiệu vàng9 Huy hiệu bạc23 Huy hiệu đồng1 gold badge9 silver badges23 bronze badges