Как вставить объединенный массив в таблицу MySQL, используя операторы PDO - PullRequest
0 голосов
/ 27 марта 2019

У меня есть объединенный массив со значением типа [ключ] => и я хочу вставить его в таблицу mysql, используя подготовленный оператор PDO. Мой код, как показано ниже:

$a = array('avocado', 'apple', 'banana');
$b = array('green', 'red', 'yellow');

$c = array_combine($a, $b);

print_r($c);



$stmt = $pdo->prepare("INSERT INTO fruits (name, color) VALUES (?,?)");
try {
    $pdo->beginTransaction();
    foreach ($c as $row)
    {
        $stmt->execute($row);
    }
    $pdo->commit();
}catch (Exception $e){
    $pdo->rollback();
    throw $e;
}


However, when I execute the statement, I get an error code:

Warning: PDOStatement::execute() expects parameter 1 to be array, string given in C:\xampp\htdocs\mysites\PDOmysql_tutorial\pdoInsert.php on line 19.  Could I get a little help to correct my code or a comment if I am using the right approach.  Thanks

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Вы просто отправляете значение массива в функцию execute. Отправьте ключ и значение в массиве:

$a = array('avocado', 'apple', 'banana');
$b = array('green', 'red', 'yellow');

$c = array_combine($a, $b);

print_r($c);



$stmt = $pdo->prepare("INSERT INTO fruits (name, color) VALUES (?,?)");
try {
    $pdo->beginTransaction();
    foreach ($c as $name => $color)
    {
        $stmt->execute( [ $name, $color ] );
    }
    $pdo->commit();
}catch (Exception $e){
    $pdo->rollback();
    throw $e;
}
0 голосов
/ 28 марта 2019

без объединения массивов:

$a = array('avocado', 'apple', 'banana');
$b = array('green', 'red', 'yellow');

$stmt = $stmt->prepare("INSERT INTO fruits (name, color) VALUES (?,?)");

$fruit = "";
$color = "";

$stmt->bindParam(1, $fruit);
$stmt->bindParam(2, $color);

$count = count($a);
$x = 0;
while($count > $x){
    $fruit = $a[$x];
    $color = $b[$x];
    $stmt->execute();
    //echo $fruit . ": " . $color . "<br>";
    $x++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...