Php 如何使用$\u session[]名称为mysql数据库定义表?

Php 如何使用$\u session[]名称为mysql数据库定义表?,php,mysql,session,Php,Mysql,Session,我需要帮助协调使用会话的方式[] $_SESSION['loginname']=jordan@yahoo.com; $table_name=$_SESSION['loginname']; 是数据库中表的名称 $username = "root"; $password = ""; $hostname = "localhost"; $database = "basketball_database"; $table = "$table_name"; 我一直收到一个警告:mysql\u fetch

我需要帮助协调使用会话的方式[]

$_SESSION['loginname']=jordan@yahoo.com;
$table_name=$_SESSION['loginname']; 
是数据库中表的名称

$username = "root";
$password = "";
$hostname = "localhost";
$database = "basketball_database";
$table = "$table_name";
我一直收到一个警告:mysql\u fetch\u数组期望参数1是资源,布尔值在

这导致这组代码出现问题

$mysql = "SELECT DISTINCT quiz_name FROM $table";
$mydata = mysql_query($mysql,$con);
while($records = mysql_fetch_array($mydata)){
然后我添加了mysql\u错误并返回

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''jordan@yahoo.com'' at line 1
我做错了什么?多谢各位

quick_main.php

<?php
session_start();
?>
<!DOCTYPE html> 
<html>

<head>
  <title>Quiz</title>

  <link rel="stylesheet" type="text/css" href="css/style.css" /> 
</head>

<body>
  <div id="main">

    <header>
      <div id="welcome">
        <h2>Prairie View A&amp;M University</h2>
      </div><!--close welcome-->                
    </header>   

    <nav>
      <div id="menubar">
        <ul id="nav">
          <li><a href="index.php">Home</a></li>
          <li><a href="user-account.php">Account Info</a></li>
          <li class="current"><a href="quiz_main.php">Quiz</a></li>
          &nbsp &nbsp &nbsp &nbsp &nbsp
<?php
if($_SESSION['loginname'])
echo $_SESSION['loginname'].", "."<a href='user-account.php'>Account</a>"."     "."<a href='logout.php'>Logout</a>";

else
    die("You must login");
?>
        </ul>
      </div><!--close menubar-->    
    </nav>      

    <div id="site_content">

    <h2 style="font-size:50px" align="center" > Quiz Page</h2>

   <h2> All Quizzes:</h2></br>
    <?php
    $table_name=$_SESSION['loginname'];
    $username = "root";
$password = "";
$hostname = "localhost";
$database = "basketball_database";
$table = $table_name;

$con = mysql_connect($hostname, $username, $password)
 or die("Unable to connect to MYsql");
// echo "Connected to mysql<br>";

$db = mysql_select_db("$database")
 or die("Could not select Basketball_database");
 //echo "Connected to database";

//form for selecting quiz
echo "<form action=\"/xampp/Website_DataBase/Pvamu_website/quiz/index.php\" method=\"post\">";

$mysql = "SELECT DISTINCT quiz_name FROM '$table_name'";
$mydata = mysql_query($mysql,$con);

if($mydata === FALSE) {
die(mysql_error()); // TODO: better error handlin
}


while($records = mysql_fetch_array($mydata)){
    $quizname=$records['quiz_name'];

    echo "<input type=radio name=name_quiz value='".$records['quiz_name']."'>".$records['quiz_name']."<br>";
}


echo "<input type=submit value=Submit Continue>";
echo "</form>"; 


    ?>
    <a href="quiz_folder/coach_quizzes.php">Creat a Quiz</a>
      <div id="content">
        <div class="content_item">


      </div><!--close content_container-->          
    </div><!--close content_item-->
</div><!--close content-->   
    </div><!--close site_content-->     

    <footer>
     <a href="index.php">Home</a> | <a href="photos.php">Photos</a> | <a href="videos.php">Videos</a> | <a href="schedule.php">Schedule</a> | <a href="contact.php">Contact</a><br/><br/>

    </footer>   

  </div><!--close main-->

  <!-- javascript at the bottom for fast page loading -->
  <script type="text/javascript" src="js/jquery.min.js"></script>
  <script type="text/javascript" src="js/image_slide.js"></script>  

</body>
</html>
1删除引号

$hostname = "localhost";
$database = "basketball_database";
$table = $table_name;
2将代码更改为

$mysql = "SELECT DISTINCT quiz_name FROM '$table'";
$mydata = mysql_query($mysql);
while($records = mysql_fetch_array($mydata)){
如果尚未在页面中启动会话


将session_start添加到页面顶部

如果表名中有特殊字符,则需要倒勾:

$table = str_replace('`', '``', $table); // escape backticks in $table

$mysql = "SELECT DISTINCT quiz_name FROM `$table`";
@和。字符需要反勾号,许多其他可能的字符也需要反勾号。请快速阅读有关SQL注入的内容:


您的查询失败。使用mysql\u error找出原因。我猜您忘记使用session\u start了。因此最终查询是从中选择不同的测验名称jordan@yahoo.com真正地1@{].,只是一个注释,但这一行实际上并没有做任何有用的事情:$table=$table_name;您只是在创建另一个具有相同内容的变量。顺便说一句,您使用的mysql API很旧,很快就会被删除。您应该学习PDO,它会更好。@johncode这根本不是那个问题的重复。这是相同的错误消息,但这是一个完全不同的问题。我已经尝试过该方法,但仍然得到一个错误。然后我添加了mysql\u错误,并返回您的SQL语法中有一个错误;请查看与您的mysql服务器版本对应的手册,以获取正确的语法jordan@yahoo.com第1行是句号还是@符号起作用?然后您应该检查是否有错误…如下..如果$mydata{while loop}或者{echo mysql_error;}那么会话变量也应该被分配字符串值。$_session['loginname']= jordan@yahoo.com;我添加了else,它只是给了我最初的错误警告:mysql_fetch_数组期望参数1是resource,布尔值在$_会话['loginname'中给出已定义为jordan@yahoo.com从另一个页面开始。我在每个页面的开头都添加了session_start。这是backticks。我有双引号和单引号的问题,现在我需要注意backticks。我知道mysql已经过时了。只需将其更改为mysqli即可。您需要使用mysql_real_escape_字符串引号。mysqli还需要mysqli_real_escape_字符串注意i。或者你可以使用PDO,它可以为你自动进行转义。这就是我建议使用的。我提供的三个链接对此进行了解释。