私は準備された文の関数を記述しようとしていますが、私は、コードを実行すると、それは私にエラーを与えて次のようにステートメント機能 - スコープエラー
mysqli_stmt_store_result() expects parameter 1 to be mysqli_stmt, null given
My機能はなります
function fn_preparedStatement($query, $types, $values){
global $dbconnection;
if (!$dbconnection) {
die("Function wm_dynamicForm connection failed.</br>");
}
$db = mysqli_stmt_init($dbconnection);
if (mysqli_stmt_prepare($db, $query)) {
mysqli_stmt_bind_param($db, $types, ...$values);
if (!mysqli_stmt_execute($db)) {
echo "Execute Error: " . mysqli_error($dbconnection);
}
} else {
echo "Prep Error: " . mysqli_error($dbconnection);
}
}
はその後、私のコードで私が持っている:
$query = "SELECT * FROM Contacts WHERE First_Name = ?";
$types = "s";
$values = array("Mike");
fn_preparedStatement($query, $types, $values);
mysqli_stmt_store_result($db); //im getting the error on this line - null
だから、イム思考私の問題は、スコープの問題です。私はこの仕事をするために私の機能から何を "返す"か分からない。コードをインラインで書くとうまく動作します。準備されたステートメントを関数に移動し、インラインコードを関数imに置き換えてエラーになったときです。誰かが私がどこを乱しているか教えてもらえますか?どうもありがとうございます。
からのステートメントハンドルを返す必要があります。 – aynber
@ user982853私はそれについて私のコメントを削除しました、私は瞬時に混乱していました。 '$ db'はこのようなことをするときに使う良い変数ではなく、もしあればもっと' $ query'のようなものでなければなりません。あなたのコードはかなり混乱しています。 –
'$ db'はどこから来ましたか?あなたは関数からステートメントハンドルを返さないので、それは魔法です – RiggsFolly