PHP SQL 查询列表 WHERE=?
Posted
技术标签:
【中文标题】PHP SQL 查询列表 WHERE=?【英文标题】:PHP SQL Query listing WHERE=? 【发布时间】:2018-05-20 18:59:08 【问题描述】:您好,我正在尝试学习 php。我将 phpmyadmin 与 xampp 一起使用。我想根据以下查询收听:
"$add='SELECT * FROM movielibrary WHERE username="$libraryuser"';
但是没有元素进入 mylibrary.php 页面。当我尝试回显 $libraryuser 时,它是正确的,但是当我写入 sql 查询时,它不匹配并且我的表是空白的。我的用户名是“info”,如果我写了
"$add='SELECT * FROM movielibrary WHERE username="info"';
这是正确的,但我需要做 $libraryuser。
我该怎么办?
这是我的问题的屏幕截图:
this is when i write to username='info' it is okey
this is when i write to $libraryuser there is no listing
我也试过了
'username'=$libraryuser , "username"=$libraryuser , username='$libraryuser , username="$libraryuser
但它不起作用。
<?php
require_once("config.php");
session_start();
$libraryuser=$_SESSION['user'];
echo $libraryuser;
$add='SELECT * FROM movielibrary WHERE username="$libraryuser"';
echo "<table>
<tr>
<td width=2%></td>
<td height=175 width=20%>
<a href=index.php>
<img src=images/Logo.png width=400></a>
</td>
<td width=55%></td>
<td width=12% valign=top >
<td width=12% valign=top >
<div class=row>
<div class='col-md-3 col-sm-3 col-xs-6'> <a href=logout.php class='btn btn-sm animated-button victoria-two'>Logout</a> </div></td>
</tr>
</table>";
echo "<center><font size=10><b>My Library</b></font></center> <table>";
if($result=mysqli_query($conn,$add))
echo "</br></br></br></br><table width=%70 border='1' align=center cellspacing='0' cellpadding='6'>
<tr align='center' bgcolor='#999966'>
<td>
<b>Movie Name</b>
</td>
<td>
<b>Director </b>
</td>
<td>
<b>Cast</b>
</td>
<td>
<b>Year</b>
</td>
<td>
<b>Runtime</b>
</td>
<td>
<b>Movie Genre</b>
</td>
</tr>";
while($read=mysqli_fetch_array($result))
echo "
<tr align='center' bgcolor='#c2c2a3'>
<td>
$read[movie_name]
</td>
<td>
$read[director]
</td>
<td>
$read[movie_cast]
</td>
<td>
$read[year]
</td>
<td>
$read[runtime]
</td>
<td>
$read[movie_genre]
</td>";
echo "</tr>
</table>";
?>
【问题讨论】:
注意:mysqli
的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query
接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)
和 $db->prepare("…")
程序接口是 PHP 4 时代引入的 mysqli
API 的产物,不应在新代码中使用。
警告:当使用mysqli
时,您应该使用parameterized queries 和bind_param
将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 切勿将$_POST
、$_GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
请在此处以纯文本形式发布代码、错误、示例数据或文本输出,而不是难以阅读的图像,不能复制粘贴以帮助测试代码或在答案中使用,并且对使用屏幕阅读器的人怀有敌意。您可以编辑问题以在问题正文中添加代码。使用
按钮来格式化任何代码块,或者使用四个空格缩进以获得相同的效果。 很遗憾,我们无法将您的屏幕截图作为代码运行。
考虑使用development framework 来解决此类问题。这些为您提供了将代码组织到适当的模型、视图和控制器上下文中的模式,并避免最终导致混乱的关注点,html、PHP、SQL 和 javascript 都混在一起。框架有多种形式,从像 Fat-Free Framework 这样的非常精简到像 Laravel 这样的功能非常全面,以及介于两者之间的许多地方。
在$add
中使用单引号构建 SQL 时,不支持变量替换。
【参考方案1】:
你需要替换查询
'SELECT * FROM movielibrary WHERE username="$libraryuser"';
与
"SELECT * FROM movielibrary WHERE username='$libraryuser'";
然后它会起作用。
【讨论】:
以上是关于PHP SQL 查询列表 WHERE=?的主要内容,如果未能解决你的问题,请参考以下文章
如何在标准 SQL 的 WHERE 子句中使用 WITH 子查询作为选项列表