1

これは変です。prepare()とbind_result()に1つの変数を追加するだけで、エラーが発生します。動作したコードは次のとおりです。

$id = $_GET['id'];
$result = $mysqli->prepare("SELECT YiD, Title FROM Videos WHERE iD = ?");
$result->bind_param("s",$id);
$result->bind_result($youtubeid, $youtubetitle);
$result->execute();
$result->store_result();
$result->fetch();

これが機能しなかったコードです:

$id = $_GET['id'];
$result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?");
$result->bind_param("s",$id);
$result->bind_result($youtubeid, $youtubetitle, $youtubedesc);
$result->execute();
$result->store_result();
$result->fetch();

そしてそれは私にこのエラーを与えました-致命的なエラー:23行目の/home/content/77/9901377/html/video.phpの非オブジェクトでメンバー関数bind_param()を呼び出す

23行目はbind_param( "s"、$ id)です

データベースを正しく呼び出し、最初のコードですべてが機能しますが、コードにさらに変数を追加すると機能しません。

4

2 に答える 2

3

Desc はMySQL の予約語です。列名やテーブル名として使用したい場合は、バッククォート (`) で囲む必要があります。

于 2012-09-26T21:21:46.240 に答える
1

問題は、それ$resultがオブジェクトではないことです。

ここでは(予約済みのキーワード)Falseを使用しているため、エラー コードまたはです。Desc

 $result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?");

そのため$mysqli->prepare、パラメーター バインディングに適した SQLi オブジェクトではなく、エラーが返されました。

列名を引用してみてください。

于 2012-09-26T21:22:28.390 に答える