Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `mysqli_stmt::bind_param()` Memerlukan Rujukan, dan Bagaimana Saya Boleh Membetulkan Ralat 'Parameter Dijangka Menjadi Rujukan'?
Menyelesaikan masalah "mysqli bind_param() Parameter Dijangka Menjadi Rujukan" Ralat
Ralat "Parameter 3 to mysqli_stmt()bind_param() dijangka menjadi rujukan, nilai yang diberikan" menunjukkan percanggahan antara jenis input yang dijangkakan dan nilai yang diberikan dalam kaedah mysqli_bind_param().
Dalam kod yang diberikan, anda menggunakan call_user_func_array() untuk menghantar tatasusunan nilai kepada mysqli_stmt_bind_param(). Walau bagaimanapun, mysqli_bind_param() menjangkakan parameter akan diluluskan melalui rujukan, manakala call_user_func_array() menerima sama ada rujukan atau nilai.
Untuk membetulkan isu ini, anda boleh menggunakan penyelesaian berikut yang disediakan dalam dokumentasi PHP:
$refs = array(); foreach ($params as $key => $value) $refs[$key] = &$params[$key]; call_user_func_array(array($statement, 'bind_param'), $refs);
Kod ini mencipta tatasusunan rujukan ($refs) kepada elemen dalam $params tatasusunan dan hantar tatasusunan $refs ke mysqli_stmt_bind_param(), memastikan bahawa parameter diluluskan melalui rujukan.
Sebagai alternatif, anda boleh menggunakan operator spread (tersedia dalam versi PHP yang lebih baharu) untuk menghantar terus elemen $ tatasusunan params sebagai rujukan:
call_user_func_array(array($statement, 'bind_param'), ...$params);
Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_param()` Memerlukan Rujukan, dan Bagaimana Saya Boleh Membetulkan Ralat 'Parameter Dijangka Menjadi Rujukan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!