Я сейчас играю с MySQLi, пытаясь понять, как все это работает. В моих текущих проектах мне всегда нравится выделять строку запроса во время кодирования, просто чтобы убедиться, что все правильно, и быстро отладить мой код. Но... как я могу сделать это с помощью подготовленного оператора MySQLi?
Пример:
$id = 1;
$baz = 'something';
if ($stmt = $mysqli->prepare("SELECT foo FROM bar WHERE id=? AND baz=?")) {
$stmt->bind_param('is',$id,$baz);
// how to preview this prepared query before acutally executing it?
// $stmt->execute();
}
Я просматриваю этот список ( http://www.php.net/mysqli), но без везения.
ИЗМЕНИТЬ
Ну, если это невозможно из-за MySQLi, возможно, я буду придерживаться чего-то вроде этого:
function preparedQuery($sql,$params) {
for ($i=0; $i<count($params); $i++) {
$sql = preg_replace('/\?/',$params[$i],$sql,1);
}
return $sql;
}
$id = 1;
$baz = 'something';
$sql = "SELECT foo FROM bar WHERE id=? AND baz=?";
echo preparedQuery($sql,array($id,$baz));
// outputs: SELECT foo FROM bar WHERE id=1 AND baz=something
Далека от совершенства, очевидно, поскольку он все еще довольно избыточен; что-то, что я хотел предотвратить — и это также не дает мне представления о том, что делается с данными MySQLi. Но я предполагаю, что таким образом я могу быстро увидеть, имеются ли все данные и в нужном месте, и это сэкономит мне некоторое время по сравнению с подстановкой переменных вручную в query — это может быть болью со многими варами.