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)
所以,我使用一个查询来获取个人资料照片,我使用以下查询:
$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)