“我的PHP代码”下拉列表中从MYSQL中选择项目时出错

“我的PHP代码”下拉列表中从MYSQL中选择项目时出错,php,Php,我有一个有下拉列表的界面,你必须选择一个项目并点击提交按钮来查看mysql中的数据库,但不工作,它给出错误“Table'balhaf.$Table'不存在” 这是我的密码 接口 <html> <body> <form method="post" action="list_files.php"> <input name="go" type="submit" value="submit" / > <?php $dbname = 'balhaf

我有一个有下拉列表的界面,你必须选择一个项目并点击提交按钮来查看mysql中的数据库,但不工作,它给出错误“Table'balhaf.$Table'不存在”

这是我的密码 接口

<html>
<body>

<form method="post" action="list_files.php">
<input name="go" type="submit" value="submit" / >

<?php
$dbname = 'balhaf';

if (!mysql_connect('localhost', 'sqldata', 'sqldata')) {
echo 'Could not connect to mysql';
exit;
}

$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}

echo '<select name="dropdown" style="width:150px">';

echo '<option value="">Select</option>';

while ($row = mysql_fetch_row($result)) {

echo '<option value="'.$row[0].'">'.$row[0].'</option>';

}

echo '</select>';
echo '</form>';
mysql_free_result($result);

?>
</body>
</html>

我的第二个代码 “list_files.php”


您看到的错误是数据库错误。这与下拉列表无关

您遵循的语法不正确

改变

$sql = "SELECT id, name, mime, size, created FROM '$table'";

您的代码:

$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM '.$table;
应为:

$sql = "SELECT `id`, `name`, `mime`, `size`, `created` FROM $table";


当变量位于字符串中时,在变量周围放置{}:

 $sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM $table'; //wrong
 $sql = "SELECT `id`, `name`, `mime`, `size`, `created` FROM {$table}"; //right
在字符串中放置变量时,请确保使用双引号:

 $sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM $table'; //wrong
 $sql = "SELECT `id`, `name`, `mime`, `size`, `created` FROM {$table}"; //right

另外,请注意,如果您让用户设置要放入字符串中的变量,则这可能会受到SQL注入攻击。

。。。该表是否存在?该表可能存在。问题是语法错误,因为服务器无法读取$table的值;如果您可以看到我的代码,我可以查看数据并下载它们,但是如何代替下载删除数据。它应该与
“$table”
一起工作,并将整个查询放入
中。您应该错过了一些内容。完全错误或可能出现意外行为?我相信,解析包含变量的双引号应该能够正确解析$sql字符串以查询数据库。
$sql = "SELECT `id`, `name`, `mime`, `size`, `created` FROM $table";
 $sql = "SHOW TABLES FROM $dbname"; //might work
 $sql = "SHOW TABLES FROM {$dbname}"; //preferable
 $sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM $table'; //wrong
 $sql = "SELECT `id`, `name`, `mime`, `size`, `created` FROM {$table}"; //right