php 中 sql 查询的问题

Problems with sql query in php

所以,我使用一个查询来获取个人资料照片,我使用以下查询:

$sql = "SELECT photo FROM users WHERE login = '$username'";

我已经尝试了很多方法,有和没有引号。

$sql = "SELECT `photo` FROM `users` WHERE `login` = '$username'";

下一个代码如下:

$result = mysqli_query($link, $sql);
echo "<script>console.log('photo: ".$sql."');</script>";

当我检查控制台时,我看到这个错误: 未捕获的语法错误:参数列表后缺少 )

当我只使用 "select photo from users" 进行查询时,它 returns 一个值。

在另一个页面上,我使用相同的代码来获取权限,它 returns 是我想要的值

$sql = "SELECT permission FROM users where login = '$username'";
$result = mysqli_query($link, $sql);
   if ($result->num_rows > 0) {
        while ($row = mysqli_fetch_array($result)) {
        $save = $row[0];
        }
    }

权限栏是int;

图片栏是varchar;

由于查询包含单引号,您不能在 console.log() 的参数周围使用单引号,因为查询中的引号将终止 JavaScript 字符串。

在 JS 字符串两边加上双引号。

echo "<script>console.log(\"photo: ".$sql."\");</script>";

您的 javascript 控制台包含在 ' 引号中,并且您的 '$username' 值也使用这些单引号,因此这会导致问题。

因此;如果您想将此 SQL 字符串导出到您的控制台,您需要转义这些单引号或在 javascript.

中使用替代引号

此问题已由 更好地解决。

但是:

最佳实践;你应该 NOT 输出 SQL 字符串到你的浏览器。这是一个潜在的严重安全漏洞。相反(特别是如果你的 SQL 服务器是 'localhost')你应该将你的 SQL 数据输出到你的 PHP 错误日志:

 $result = mysqli_query($link, $sql);
 //echo "<script>console.log('photo: ".$sql."');</script>";
 error_log("Query Output: ".print_r($sql,true));

然后在您的 IDE 或安全服务器连接(SFTP 等)中,您可以访问 PHP 错误日志并更安全地查看 SQL。

另请参阅:Where does PHP store the error log? (php5, apache, fastcgi, cpanel)