У меня есть статическое соединение с базой данных, установленное в файле, который я включаю вmysqli_real_string_escape неудачи с ГЕТ
include_once 'database.inc.php';
имени $mysqli
.
Когда я прохожу параметр $tbname
из формы с помощью $tbname = $_GET['tbname']
и попытаться использовать $tbname = $mysqli->real_esacpe_string($tbname)
, он производит идентичный вывод $ tbname, в том числе, когда недопустимые символы, такие как /,'"
используется в названии.
Основываясь на других вопросах и правильном использовании, я не могу найти причину, по которой побег строки должен завершиться неудачно. Он также терпит неудачу, если процедурный вызов используется для mysqli_real_escape_string($mysqli, $tbname)
.
Когда $tbname
корректен и не строка спасся функции, мой запрос
query = $mysqli->prepare("CREATE TABLE $tbname (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY)") or trigger_error($mysqli->error."[$query]");
работает как задумано.
Ну, причина, по которой я не использовал подготовленные заявления, заключалась в том, что, по-видимому, вы не можете динамически создавать такие таблицы. Спасибо за ваш ответ. – socrates