Como indica el título, ¿por qué MySQLi usa signos de interrogación en lugar del formato sprintf()
? Por ejemplo, ¿por qué?
$stmt = $mysqli->prepare("SELECT * FROM table WHERE column1 = ?");
$stmt->bind_param('s', $var);
en lugar de
$stmt = $mysqli->prepare("SELECT * FROM table WHERE column1 = %s", $var);
¿Hubo algunas complicaciones con el uso del formato de sprintf, o hubo riesgos de seguridad asociados con él? Además, si necesita tener un signo de interrogación en su declaración SQL, ¿hay alguna forma de evitarlo (en sprintf()
, solo haría %%
en lugar de %
)?