Вставьте массив в MySQL из проанализированных данных

У меня есть скрипт, который анализирует данные из таблиц HTML и помещает их в массив. Вот пример вывода из скрипта:

Array
(
[] => Array
(
[] => Array
(
[] => Array
(
[] => Array
(
[] => 1
)
)
)
)

[Precinct Code] => Array
(
[Precinct] => Array
(
[Total Registered] => Array
(
[Total Voting] => Array
(
[Percent Voting] => 1
)
)
)
)

[004] => Array
(
[AWENDAW] => Array
(
[1299] => Array
(
[926] => Array
(
[71.285] => 1
)
)
)
)
)

Я хочу вставить эти массивы в базу данных MySQL, и я использую следующий код:

    $html = file_get_html('URL GOES HERE');
foreach($html->find('tr') as $row) {
$precinct = $row->find('td',0)->plaintext;
$precinctCode = $row->find('td',1)->plaintext;
$totalRegistered = $row->find('td',2)->plaintext;
$totalVoting = $row->find('td',3)->plaintext;
$percentVoting = $row->find('td',4)->plaintext;

$table[$precinctCode][$precinct][$totalRegistered][$totalVoting][$percentVoting] = true;

/* Dump each array into MySQL table */
$db = new PDO('mysql:host=localhost;dbname=MY_DATABASE_NAME', 'USERNAME', 'PASSWORD');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$insert = $db->prepare(
'INSERT INTO rsltStats (precinctCode , precinct, totalRegistered,
totalVoting, percentVoting ) VALUES (?, ?, ?, ?, ?)');

foreach($table as $values) {
$insert->execute($values);
}
}

Однако он продолжает выдавать ошибку: Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [HY093]: недопустимый номер параметра: число связанных переменных не соответствует числу токенов»

Я довольно новичок в этом, поэтому любая помощь приветствуется.

2

Решение

Вместо этого:

$table[$precinctCode][$precinct][$totalRegistered][$totalVoting][$percentVoting] = true;
...
foreach($table as $values) {
$insert->execute($values);
}

Это зацикливание на таблице $, которая имеет только одну строку, где индекс равен precinctCode, а затем значения $ заканчиваются только 4 элементами. Не 5.

Попробуйте вместо этого просто:

$values = array($precinctCode,$precinct,$totalRegistered,$totalVoting,$percentVoting);
...
$insert->execute($values);

Если впоследствии вам понадобится этот массив $ table, вы все равно можете создать этот вложенный массив $ table [] [] [], как вы, но не используйте его для выполнения sql.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector