0

次のPDOSELECTステートメントのエラーを探して夢中になっています。

$get_allocation_id = "
  SELECT id
  FROM form1_group_info 
  WHERE
   group_name=:group_name, 
   group_leaders=:group_leaders, 
   soas_short_cd=:soas_short_cd, 
   phone_number=:phone_number, 
   email=:email 
  LIMIT 1";
$alloc_id_stmt = $dbh->prepare($get_allocation_id);
$alloc_id_stmt->bindParam(":group_name", $params['group_name']);
$alloc_id_stmt->bindParam(":date_submitted", $params['date_submitted']);
$alloc_id_stmt->bindParam(":group_leaders", $params['group_leaders']);
$alloc_id_stmt->bindParam(":soas_short_cd", $params['soas_short_cd']);
$alloc_id_stmt->bindParam(":phone_number", $params['phone_number']);
$alloc_id_stmt->bindParam(":email", $params['email']);
$alloc_id_stmt->execute();

上記のコードは、$paramsを提供するajaxリクエストによって呼び出されるPHPファイルに含まれています。

どんな提案でも大歓迎です。

4

2 に答える 2

2

エラーを含めると役に立ちます。そうは言っても、問題は次のとおりだと思います。

$alloc_id_stmt->bindParam(":date_submitted", $params['date_submitted']);

クエリでそのパラメータを使用していません。

于 2012-09-12T16:03:59.607 に答える
2

SQL構文が無効です。WHERE句の条件は論理的に区切る必要がありますAND(またはOR、この場合は訴訟を起こすことを想定してANDいます)が、コンマで区切っています。

  SELECT id
  FROM form1_group_info 
  WHERE
   group_name=:group_name
   /* Insert logical AND */
   AND group_leaders=:group_leaders 
   AND soas_short_cd=:soas_short_cd 
   AND phone_number=:phone_number
   AND email=:email 
  LIMIT 1;

上記のように、クエリで使用されていないパラメータもバインドしています。おそらくあなたは意味します:

  SELECT id
  FROM form1_group_info 
  WHERE
   group_name=:group_name 
   AND group_leaders=:group_leaders 
   AND soas_short_cd=:soas_short_cd 
   AND phone_number=:phone_number
   AND email=:email
   /* forgot this one... */
   AND date_submitted=:date_submitted
  LIMIT 1;
于 2012-09-12T16:04:50.853 に答える