在重定向页面中提交表单时出现SQL错误

时间:2012-09-16 18:57:14

标签: mysql sql pdo php

  

可能重复:
  Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in

我尝试提交具有不同广告类型选项的广告表单,但是当我提交表单时会出现此错误:

  

错误:SQLSTATE [HY093]:参数号无效:绑定数   变量与令牌数量不匹配

SQL代码:

try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
$req = $bdd->prepare('INSERT INTO ads (kind, kind2, kindsale, titre, price, money, country, state, county, city, adress, phone, message, image, image2, image3, image4, image5, image6, inputid, date, ldesc, email, account, room, area, uarea, file, mark, miles, mi) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
$req->execute(array($_POST['kind'], $_POST['kind2'], $_POST['kindsale'], $_POST['titre'], $_POST['price'], $_POST['money'], $_POST['country'], $_POST['state'], $_POST['county'], $_POST['city'], $_POST['adress'], $_POST['phone'], $_POST['message'], '1'.$name.$name6.$_FILES['image']['name'], '2'.$name2.$name5.$_FILES['image2']['name'], '3'.$name3.$name4.$_FILES['image3']['name'], '4'.$name4.$name3.$_FILES['image4']['name'], '5'.$name5.$name2.$_FILES['image5']['name'], '6'.$name6.$name.$_FILES['image6']['name'], $_POST['inputid'], $_POST['date'], $_POST['ldesc'], $_POST['email'], $_POST['taccount'], $_POST['room'], $_POST['area'], $_POST['uarea'].$name3.$name4.$_FILES['file']['name'], $_POST['mark'], $_POST['mileage'], $_POST['mi']));
header('Location: index.php');
}
catch(Exception $e)
{
    die('Error: '.$e->getMessage());
}

表单中的某些数据隐藏了$('。thing')。hide();在jquery但我认为即使隐藏这些提交为无效,所以存在。

由于

2 个答案:

答案 0 :(得分:0)

哦不不不。试着赶上你的设计名为 database normalisation ,你的桌子ads正在为此而尖叫。其次,您的错误与没有足够的参数(或太多)绑定查询中的问号?或占位符的数量有关。只计算它们,看看哪一个或两个(或更多)缺失(或太多)

答案 1 :(得分:0)

您提供的参数数量少于SQL语句中的参数数量。也就是说,SQL语句中有32个问号,这意味着您必须提供32个值。如果我的计数是正确的,你只提供30。