0

準備ステートメントで 2 つの変数を渡そうとしていますが、実際には 2 つの変数を渡すことができません。コードにエラーがあります。

Warning: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: Number of variables doesn't match number of parameters in prepared statement in /Applications/XAMPP/xamppfiles/htdocs/admin/genre.php on line 4

Fatal error: Call to a member function close() on a non-object in /Applications/XAMPP/xamppfiles/htdocs/admin/genre.php on line 9

これは私のコードです:

    <?php
include("../db_inc.php");
if($stmt=$connection->prepare("INSERT INTO genre(genre_name,genre_desc) VALUES('?','?')")){
    $stmt->bind_param('sd',$genre_name,$genre_desc);
    $genre_name =$_POST["genre_name"];
    $genre_desc =$_POST['genre_desc'];
    $stmt -> execute();
     $stmt -> close();
     $mysqli -> close();
    }
$result=mysql_query($qry) or die(mysql_error());
if("$result"){
    echo "Add Successfully";
    }
?>
4

2 に答える 2

2

値から引用符を削除してみてください...

"INSERT INTO genre(genre_name,genre_desc) VALUES('?','?')"

する必要があります...

"INSERT INTO genre(genre_name,genre_desc) VALUES(?, ?)"

編集-編集: このビットは忘れてください...私は修正されたままです

編集:また...

$stmt->bind_param('sd',$genre_name,$genre_desc);
$genre_name =$_POST["genre_name"];
$genre_desc =$_POST['genre_desc'];

する必要があります...

$genre_name =$_POST["genre_name"];
$genre_desc =$_POST['genre_desc'];
$stmt->bind_param('sd',$genre_name,$genre_desc);

使用後に変数を宣言しています。

于 2013-11-11T21:50:17.360 に答える
1
$stmt->bind_param('sd',$genre_name,$genre_desc);
$genre_name =$_POST["genre_name"];
$genre_desc =$_POST['genre_desc'];

$genre_name を文字列として、$genre_desc をバインド パラメータの double として持っています... $_POST['genre_desc'] で渡されたデータは double であり、文字列ではありませんか? 説明を渡しているように見えますが、これは次のように文字列になります。

$stmt->bind_param('ss',$genre_name,$genre_desc);

PS: bind_param の変数の定義は、bind_param ステートメントの後に配置すると問題ありません。それらは、ステートメントの「実行」コマンドの前に宣言する必要があります。

于 2013-11-11T22:13:47.537 に答える