我正在尝试解析网址并连接到数据库。
例如,当用户访问url.php?id=1
时,他们应该获得与该主题相关的问题和答案列表。
当我运行MySQL查询时
SELECT * FROM QuestionDB WHERE TopicID = 1
在phpmyadmin中,我得到了所需的行。
这是我的代码。我返回一个空白文件!
$topic = $_GET['id'];
$dbhost = 'host';
$dbuser = 'user';
$dbpass = 'pass';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT * FROM QuestionDB WHERE TopicID = '$topic'';
mysql_select_db('mydb');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo "Question :{$row['Question']} <br> ".
"Answer : {$row['Answer']} <br> ".
"Author : {$row['Author']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
我无法弄清楚我做错了什么。如果我删除了查询的WHERE TopicID = '$topic'
部分,则此代码会打印出数据库中的所有行。
提前干杯
答案 0 :(得分:0)
您遇到语法错误。与变量的字符串连接失败。
您必须更改此行:
$sql = 'SELECT * FROM QuestionDB WHERE TopicID = "'.$topic.'"';
或
$sql = "SELECT * FROM QuestionDB WHERE TopicID = '$topic'" ;
重要提示:您的代码容易受SQL injections攻击,并可能危及数据库的安全性。您应该使用PDO或mysqli API来保护您的SQL查询,并使用prepare
函数。