К сожалению, mysqli_stmt_bind_param
не выдает ошибку, когда в функцию передана неопределенная переменная (даже если включены все ошибки). Таким образом, вы могли бы написать что-то вроде этого, не получая столько предупреждений (просто обрабатывает неопределенную переменную как NULL
):
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ALL);
$db = mysqli_connect('host', 'user', 'pass', 'database');
$Stmt = mysqli_stmt_init($db);
mysqli_stmt_prepare($Stmt, 'SELECT id FROM table WHERE value = ?');
mysqli_stmt_bind_param($Stmt, 's', $UndefinedVariable); // <---------
mysqli_stmt_execute($Stmt);
mysqli_stmt_bind_result($Stmt, $ID);
mysqli_stmt_fetch($Stmt);
mysqli_stmt_close($Stmt);
?>
Теперь, я уверен, я уже сообщал об этом разработчикам PHP около года назад, но мне в основном сказали, что они не могут / не смогут это исправить. Однако сейчас я не могу найти отчет ...
Так что я надеюсь найти решение, чтобы заставить PHP кричать на меня, когда я (вероятно) только что сделал опечатку в источнике, что иногда случается! Есть ли для этого нативное решение?