Исходя из этого вопроса Как вставить массив в MySQL, используя PDO и bindParam?
Я пытаюсь вставить значения массива в MySQL через PDO.Мне тяжело, потому что я получаю следующую ошибку.SQLSTATE [HY093]: недопустимый номер параметра: количество связанных переменных не соответствует количеству токенов для этой строки $stmt->execute();
Я предполагаю, что проблема связана с этой строкой
$stmt->bindParam(':val$count', $val,PDO::PARAM_STR);
В частности, 'val $ count', но я точно не уверен, что происходит не так.
ВОПРОС: Что я делаю не так?Как я могу это исправить?
В любом случае вот код, который я использую вместе с образцом массива.
$lastInsertValue=87;
$qid[0][0]=1;
$qid[0][1]=1;
$qid[1][0]=2;
$qid[1][1]="null";
$qid[2][0]=3;
$qid[2][1]=0;
$array_count = count($qid);
if (isset($lastInsertValue))
{
try
{
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$stqid=array();
$a=0;
for ($i=0; $i<$array_count; $i++)
{
$stqid[$a]=$lastInsertValue;
$a++;
$stqid[$a]=$qid[$i][0];
$a++;
$stqid[$a]=$qid[$i][1];
$a++;
}
$sql = "INSERT INTO qresults (instance, qid, result) VALUES ( :val0, :val1, :val2)";
$count = 0;
$stmt = $dbh->prepare($sql);
foreach ($stqid as $val)
{
$stmt->bindParam(':val$count', $val,PDO::PARAM_STR);
$count++;
}
$stmt->execute();
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}