Я пытаюсь написать несколько запросов, чтобы адаптивно манипулировать данными MySQL, но Sublime Text 2 показывает, что запрос заканчивается раньше, чем я хочу. Проверьте ниже:
$query = "INSERT INTO `users` (`email`, `password`) VALUES('".mysqli_real_escape_string($link, $_POST['email'])."','".md5(md5($_POST['email'].$_POST['password']))."')";
Запятая и закрывающая скобка должны быть белыми.
И снова, вот та же проблема:
$query = "SELECT * FROM `users` WHERE `email`='".mysqli_real_escape_string($link, $_POST['login-email'])."' AND `password`='".md5(md5($_POST['login-email'].$_POST['login-password']))."'";
Мне очень трудно понять, как написать этот код, чтобы убедиться, что это не ошибка в моем скрипте.
Любая помощь будет оценена.
Я считаю, что это ограничение подсветки синтаксиса Sublime. Обратите внимание, что в обоих запросах выделение синтаксиса SQL заканчивается сразу после первого экземпляра конкатенации строк. Если вы хотите более тщательно выделить ваши операторы SQL, вы можете рассмотреть возможность использования подготовленных операторов. Пример:
$stmt = $mysqli->prepare("INSERT INTO `users` (`email`, `password`) VALUES (?, ?)");
$stmt->bind_param($_POST['email'], md5(md5($_POST['email'].$_POST['password'])));
$stmt->execute();
$stmt->close();
Этот подход также избавит от необходимости вручную экранировать ваши строки.
В качестве альтернативы вы можете рассмотреть возможность использования интерполяции строк вместо конкатенации. Это, похоже, не мешает подсветке синтаксиса SQL.
В вашем скрипте нет ошибки. Выделение выглядит отлично в моем Sublime Text.
Вы объединяете текст несколько раз и выделяете код за пределами двойных кавычек "
определенно будет отличаться от этого в двойных кавычках. Однако, чтобы написать код лучше, вы можете рассмотреть следующие вопросы:
$email = mysqli_real_escape_string($link, $_POST['email']);
$pass = md5(md5($_POST['email'].$_POST['password']));
$query = "INSERT INTO `users` (`email`, `password`) VALUES('$email','$pass')";
И аналогично для select
команда.