簡體   English   中英

如何使用MySQL將數組插入php中的數據庫?

[英]How do I insert an array into a database in php using MySQL?

我的代碼是:

<?php
include("connect.php");
mysql_select_db("cars",$conec);
car = array("BMW","Rolls-Royce","Lamborghini","Mustang");
color = array("red","green","blue","yellow"); 
?>

我想做的是將每輛車插入數據庫,這是我嘗試做的事,但是我得到的id卻越來越多,因為它是自動遞增的。 這是我的插入代碼如下:

for($i = 0; $i < 4; $i++){
    $res = mysql_query("insert into auto (car,colors) values ('$car[$i]','$color[$i]')");
}

編輯

經過測試和工作

<?php
DEFINE ('DB_USER', 'xxx');
DEFINE ('DB_PASSWORD', 'xxx');  
DEFINE ('DB_HOST', 'xxx');
DEFINE ('DB_NAME', 'xxx');

$mysqli = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die("could not connect");

$car = array("BMW","Rolls-Royce","Lamborghini","Mustang");
$color = array("red","green","blue","yellow");

for($i = 0; $i < 4; $i++){
    $res = mysqli_query($mysqli,"insert into auto (car,colors) values ('$car[$i]','$color[$i]')");
}
?>

如果這是您發布的實際代碼:

您忘記了carcolor變量的$符號。

 car = array("BMW","Rolls-Royce","Lamborghini","Mustang");
^-- // here
 color = array("red","green","blue","yellow"); 
^-- // and here

<?php
include("connect.php");
mysql_select_db("cars",$conec);
$car = array("BMW","Rolls-Royce","Lamborghini","Mustang");
$color = array("red","green","blue","yellow"); 
?>

我認為將PHP數組放在MySQL中通常不被接受,因為它們只能被PHP讀取。 你應該跑

$car = json_encode($car);
$color = json_encode($color);

然后,當您想從數據庫中提取信息時運行

$car = json_decode($mysqlcarvarhere);
$color = json_decode($mysqlcolorvarhere);

另外,在第二段代碼中,這會將'$ car [$ i]'插入數據庫,而不是將$ car ['$ i']的值插入數據庫。 要解決此問題,您應該將查詢更改為:

$res = mysql_query("insert into auto (car,colors) values ('" . $car[$i] . "','" . $color[$i] ."')");

同樣,在這里也有一般性的“您應該切換到PDO / MySQLi,否則您將被黑”。

出於各種原因 ,我建議您使用“ 准備的語句”

假設已經與數據庫建立了連接,這是一種實現方法:

<?php
    include("connect.php");

    $cars = array("BMW","Rolls-Royce","Lamborghini","Mustang");
    $colors = array("red","green","blue","yellow"); 

    $db = new mysqli($host, $user, $password, $database);
    $stmt = $db->prepare("INSERT INTO auto(car, color) VALUES(?, ?)");

    // Here I deliberately assume that all car has every color variant
    foreach($cars as $car) {
        foreach($colors as $color) {
            $stmt->bind_param('s', $car);
            $stmt->bind_param('s', $color);

            $stmt->execute();
        }
    }

    $stmt->close();

?>

如何使用Prepared Statement解決它只是一個粗略的主意,您始終可以將其包裝在一個函數或一個類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM