【问题标题】:Why are these quotations ending the PHP query in Sublime Text 2?为什么这些引用结束了 Sublime Text 2 中的 PHP 查询?
【发布时间】:2014-12-26 16:12:35
【问题描述】:

我正在尝试编写一些查询来响应式地操作 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 中的一个错误? Stackoverflow 似乎正确地突出了代码(尽管是 PHP 代码风格,而不是混合 PHP/SQL)。
  • 使用准备好的语句,您不必在传入动态参数/变量时分解查询:php.net/manual/en/mysqli.quickstart.prepared-statements.php
  • 语法高亮在我的 sublime 编辑器中看起来不错。

标签: php mysql sublimetext2


【解决方案1】:

您的脚本中没有错误。在我的 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 命令也是如此。

【讨论】:

    【解决方案2】:

    我相信这是 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 语法高亮显示。

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 2015-09-10
      • 2014-03-13
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多