首页 > 解决方案 > 在 MySQL 中使用 PHP 变量作为表名

问题描述

我想使用一个PHP变量 ( $username) 作为SQL我正在创建的表的名称。我需要使用它,因为在我的网页中,每个用户都需要有自己的表格,他可以在其中放置数据,当我尝试从表格中选择数据不起作用时,我尝试了很多次但它不起作用,你能帮我解决这个问题吗?

$result = mysqli_query($mysqli, "SELECT * FROM `$username` ORDER BY id DESC");

$sql= "SELECT * FROM `$username` ORDER BY data DESC";

这些都不起作用,你能帮帮我吗?

这是我的代码

  <?php 
  session_start(); 

 if (!isset($_SESSION['username'])) {
  $_SESSION['msg'] = "You must log in first";
    header('location: login.php');
 }
 if (isset($_GET['logout'])) {
session_destroy();
unset($_SESSION['username']);
header("location: login.php");

}

$sql= 'SELECT * FROM '.$username.' ORDER BY data DESC';
  ?>
<!DOCTYPE html>
 <html>
    <head></head>
    <body>
<br/><br/>
 <div>
    <table align="center" width='100%' border=0>
        <tr bgcolor='#CCCCCC'>
            <td>Data</td>
            <td>Cantiere</td>
            <td>Pranzo</td>
            <td>Cena</td>
            <td>Hotel</td>
            <td>Macchina</td>
            <td>Note</td>
            <td>Edit/Delete</td>
        </tr>
        <?php 

         while($res = mysqli_fetch_array($result)) {         
            echo "<tr>";
            echo "<td>".$res['data']."</td>";
            echo "<td>".$res['cantiere']."</td>";
            echo "<td>".$res['pranzo']."</td>";
            echo "<td>".$res['cena']."</td>";
            echo "<td>".$res['hotel']."</td>";
            echo "<td>".$res['macchina']."</td>";    
            echo "<td>".$res['note']."</td>";
            echo "<td><a href=\"edit.php?id=$res[id]\">Edit</a> | <a 
 href=\"delete.php?id=$res[id]\" onClick=\"return confirm('Are you sure you 
want to delete?')\">Delete</a></td>";        
        }
        ?>
     </table>
 </div>

         </body>
 </html>

我得到了错误:

警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,第 36 行 index.php 中给出的 null

标签: phpmysql

解决方案


你应该尝试这样的事情:

$result = mysqli_query($mysqli, "SELECT * FROM " . $username . " ORDER BY id DESC");

因为 SQL 不知道 $username 是什么

这适用于两个查询

正如洛克所建议的: Note that this answer (and the question) contain sql that easily be hijacked! Please prepare your statements before executing them!


推荐阅读