mysql_real_escape_string требует подключения к базе данных для работы. Если вы не передадите один явно, это означает, что вы должны сначала позвонить mysql_connect()
. Но вместо этого вы используете объект MySQLi()
. Я не думаю, что с помощью MySQLi()
будут установлены функции семейства соединений по умолчанию mysql_
. Конечно,
(using password: NO)
подразумевает, что он не получает $ db_pass.
Лучше придерживаться либо «mysql», либо «mysqli», а не пытаться смешивать оба. Если вы используете MySQLi, вы можете использовать параметризованные операторы, чтобы избежать явного вызова $mysqli->escape_string()
.
PS.
echo "The title of this photo has been changed to: <strong>$title</strong>";
$ title экранирован SQL, но не экранирован HTML. Он будет иметь нежелательную обратную косую черту, не предотвращая HTML-инъекцию (XSS-атаки). Вместо этого:
echo 'The title of this photo has been changed to: <strong>'.htmlspecialchars($_POST['title']).'</strong>';