2

mysqli から pdo に移行しようとしていますが、このコードを実行してください

          <?php
  $sql = "select concat(register.fname ,' ' ,register.lname) as name,register.matric   as matric,register.username as uname,register.sex as sex,register.phone as phone ,register.passport as passport ,register.email as email,register.level as level,faculty.fac_name as fac,dept.dept_name as dept,diary.diary as diary,diary.date_added as added from register,faculty,dept,diary where register.user_id = :_id  and diary.username = :name limit 1";
$sth = $dbh->prepare($sql);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->bindParam(':name', $username);
$sth->execute();


    ?> 

このエラーが表示されます ( ! ) 警告: PDOStatement::bindValue() [pdostatement.bindvalue]: SQLSTATE[HY093]: 無効なパラメーター番号: C:\wamp\www\uni\det\viewuser.php でパラメーターが定義されていません14行目

4

3 に答える 3

1

クエリで:_idは、バインド値で名前を付けました:id

于 2012-10-10T18:42:55.387 に答える
0

あなたが持っている、あなたの呼び出し:_idでそれを変更するbindValue

于 2012-10-10T18:43:05.550 に答える
0

$id変数をにバインドし:idていますが、ステートメントにはが必要:_idです。

$sth->bindValue(':_id', $id, PDO::PARAM_INT);

または、ステートメントを変更します。

  $sql = "select concat(register.fname ,' ' ,register.lname) as name,register.matric   as matric,register.username as uname,register.sex as sex,register.phone as phone ,register.passport as passport ,register.email as email,register.level as level,faculty.fac_name as fac,dept.dept_name as dept,diary.diary as diary,diary.date_added as added".
           "from register,faculty,dept,diary ".
          " where register.user_id = :id  and diary.username = :name limit 1";
于 2012-10-10T18:43:08.163 に答える