Почему эти цитаты заканчивают запрос PHP в Sublime Text 2?

Я пытаюсь написать несколько запросов, чтобы адаптивно манипулировать данными 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']))."'";

Мне очень трудно понять, как написать этот код, чтобы убедиться, что это не ошибка в моем скрипте.

Любая помощь будет оценена.

0

Решение

Я считаю, что это ограничение подсветки синтаксиса 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.

0

Другие решения

В вашем скрипте нет ошибки. Выделение выглядит отлично в моем 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 команда.

0

По вопросам рекламы [email protected]