2010-12-17 17 views
1

私は準備済みの文を使用しようとしていますが、正常に実行できません。ここ は私のコードです:mysqlは文を準備しました。どのように動作するのか理解できません。

function addAlbum($album){ 
     $connection = mysqli_connect(HOST,USER,PASS,DATABASE); 
     /*$sql = 'INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES ("'.$album.'")'; 
     $result = mysqli_query($connection,$sql);*/ 
     $stmt = $dbh->prepare('INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES ("'.$album.'")'); 
     $stmt->bindParam(':albumName', $album); 
     $result = $stmt->execute(); 

     if($result){ 
      header("Location: index.php?success"); 
     } else { 
      header("Location: index.php?fail"); 
     } 

    } 

私は上のエラーでのFirefoxでこれを実行しており、これは私が得るものです:

Fatal error: Call to undefined method mysqli_stmt::bindParam() in /Applications/MAMP/htdocs/PHPproject/includes/functions.inc.php on line 16

私が間違っているつもりどこいずれかを教えてくださいだろうか?

多くのおかげ

+0

スクリプトで 'Nooooo'が出力されるとしますか? –

+0

あなたはgoogle-chromeを使用していますか? Google Chromeにすべてのエラーが正しく表示されないため、このためにfirefoxを使用してください。 また、PHPのエラー出力を有効にする必要があります – s3v3n

+0

ありがとう、私は私の機能を実行するときに致命的なエラーを表示するために投稿を更新しました。 – Adamski

答えて

4

はバインドのための最初の引数は変数の型でなければなりません:

$stmt->bind_param("s", $album); 

また、あなたが​​なく$stmtの戻り値をチェックする必要があります。また

$result = $stmt->execute(); 
if($result){ 
    echo "yes"; 
} 
else { 
    echo "no"; 
} 

を私はあなたが何かを挿入するたびにその声明を準備するのは良い考えではないと言いたいと思います。 Preparedステートメントはクラス変数でなければなりません。あるいは、oopグローバル変数にない場合は、関数を呼び出すたびにステートメントを準備しないでください。あなたが使用するすべてのステートメントを準備する関数init()を書くだけです。

+0

あなたのアドバイスありがとう、私はまだ実行することができないようだ、私はPDOが私のphp.iniファイルにインストールされていることをチェックしてコメントアウトされていません。 – Adamski

+0

どのようなエラーがありますか?質問に追加してください。 – s3v3n

+0

最新機能を表示するために投稿を編集しました。ブラウザのエラーが表示されます。 – Adamski

関連する問題