Я недавно обновил этот проект, включив в него интеграцию с композитором, модульное тестирование и улучшенную обработку принимаемых аргументов по ссылке (для этого требуется обновление до версии 5.6).
В ответ на запрос, который я получил в проекте, который я создал для решения этой же проблемы с помощью PDO
, я создал расширение для mysqli
на github, которое, похоже, решает вашу проблему:
https://github.com/noahheck/E_mysqli
Это набор классов, которые расширяют собственные классы mysqli
и mysqli_stmt
, чтобы вы могли просматривать пример запроса, который будет выполнен на сервере БД, путем интерполяции связанных параметров в подготовленный запрос и предоставления вам доступ к результирующей строке запроса в качестве нового свойства объекта stmt
:
$mysqli = new E_mysqli($dbHost, $dbUser, $dbPass, $dbName);
$query = "UPDATE registration SET name = ?, email = ? WHERE entryId = ?";
$stmt = $mysqli->prepare($query);
$stmt->bindParam("ssi", $_POST['name'], $_POST['email'], $_POST['entryId']);
$stmt->execute();
echo $stmt->fullQuery;
Результатом будет:
UPDATE registration SET name = 'Sue O\'reilly', email = 'sue.o@example.com' WHERE entryId = 5569
Обратите внимание, что значения в fullQuery экранируются надлежащим образом с учетом набора символов на сервере БД, что должно сделать эту функцию подходящей, например, для файлы журналов, резервные копии и т. д.
Есть несколько предостережений при использовании этого, изложенных в ReadMe на проекте github, но, особенно для разработки, изучения и тестирования, это должно обеспечить некоторую полезную функциональность.
Как я уже говорил в проекте github, у меня нет практического опыта использования расширения mysqli
, и этот проект был создан по просьбе пользователей его родственного проекта, поэтому любые отзывы, которые можно предоставить от разработчиков, использующих это в производстве, будет очень признателен.
Отказ от ответственности - Как я уже сказал, я сделал это расширение.