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&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>
         
<?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,它可以为你自动进行转义。这就是我建议使用的。我提供的三个链接对此进行了解释。