내 개발 과정에서 단순한 INSERT
을 수행하고 있었지만 SQL 보호 및 준비 문을 다시 작성합니다. 받은 오류 :여러 MySQL 행 INSERT 실패
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
다음은 내가 다른 사람의 도움을 받아 사용하고있는 코드입니다.
// foreach to set up variables
foreach ($json as $text) {
$uoid = mysql_real_escape_string($uoid);
$filename = mysql_real_escape_string($uoid.".jpg");
$filedate = mysql_real_escape_string($datetime);
$imagedesc = mysql_real_escape_string($desc);
// array of values
$insert[] = array($uoid,$filename,$filedate,$imagedesc);
}
function placeholders($text, $count=0, $separator=","){
$result = array();
if($count > 0){
for($x=0; $x<$count; $x++){
$result[] = $text;
}
}
return implode($separator, $result);
}
foreach($insert as $d){
$question_marks[] = '(' . placeholders('?', sizeof($d)) . ')';
}
$pdo = new PDO('mysql:dbname=photo_gallery;host=127.0.0.1', 'myuser', 'mypass');
$pdo->beginTransaction();
$sql = "INSERT INTO wp_gallery (" . implode(',', array_values($insert)) . ")
VALUES " . implode(',', $question_marks);
// reading output
echo $sql;
$stmt = $pdo->prepare($sql);
try {
$stmt->execute($insert[0]);
} catch (PDOException $e){
echo $e->getMessage();
}
$pdo->commit();
나는 SQL 출력 봐 :
INSERT INTO wp_gallery (10219776,10219776.jpg,my image description,2012-08-01 15:36:29)
VALUES (?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?)
모든 단지 그것의 모양에 의해 일치하지만 난 여전히이 문제를 해결하는 방법에 관해서는 당황하고있다. 누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?
이 오류가 표시되지 않습니까? –
열 이름이 필요합니다. 당신은 물음표를 대체하지 않고 거기에 가치를두고 있습니다. – Ryan
커뮤니티에 제공하기 전에 질문을 검토하십시오. –