为什么这些引用在Sublime Text 2中结束了PHP查询?

时间:2014-10-30 14:46:27

标签: php mysql sublimetext2

我试图编写一些查询以响应操纵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']))."'";

我非常难以确定如何编写此代码,以便我可以确保它不是我脚本中的错误。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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语法突出显示无关。

答案 1 :(得分: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命令。