2016-05-12 33 views
-1

私はこの問題を抱えている多くの人がいることを知っていますが、私は解決策を見つけることができません。私は前にこの問題を持っていたと私はそれを修正するために管理:PHP - prepared statement bind_param()

$check = $conn->prepare("SELECT password,key,user FROM `users` WHERE email = ?"); 
$check->bind_param("s",$url_email); <-- line 31 
$check->execute(); 
mysqli_stmt_bind_result($check,$db_pass,$db_user_id,$db_username); 
$check->close(); 

しかし、プリペアドステートメントを使用したとき、私はこのエラーを取得:

PHP Fatal error: Call to a member function bind_param() on a non-object in /var/www/html/login.php on line 31

+0

'の。 – chris85

+0

あなたのクエリもユーザID「$ db_user_id」を選択していません。 – chris85

答えて

2

あなたが幸運を。すべてのフィールドの名前はmysqlのkeywords or reserved wordsです。

あなたがそれらをエスケープする必要があります厳密にのみkeyが予約語であると言って

SELECT `password`, `key`, `user` FROM `users` WHERE email = ? 

を、passworduserはありませんが、それでもescape'em。

また、@ chris85のおかげで、OOと手続きmysqliが混在しています。代わりに

mysqli_stmt_bind_result($check,$db_pass,$db_user_id,$db_username); 

使用

に予約されてkey`
$check->bind_result($db_pass, $db_user_id, $db_username); 
+0

ヒントをありがとうが、私の問題はまだ解決されていません。 $ url_email上のvar_dumpを使用した後、それは間違いなく文字列 – hayhay

+0

OOと手続き型を混在させるのが貧弱なスタイルですが、AFAIKというエラーは発生しません。 – Barmar

関連する問題