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-&gt;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 子查询作为选项列表

PHP

从列表名称及其值生成 sql 查询

Access 2010 应用基础 单元三:SQL查询

为啥“WHERE”查询不能在 php 中使用 SQLITE [重复]

Spring Boot中的本机查询,列表中元组的WHERE条件