解析url并返回数据库行

时间:2018-01-31 21:33:17

标签: php mysql

我正在尝试解析网址并连接到数据库。

例如,当用户访问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'部分,则此代码会打印出数据库中的所有行。

提前干杯

1 个答案:

答案 0 :(得分:0)

您遇到语法错误。与变量的字符串连接失败。

您必须更改此行:

$sql = 'SELECT * FROM QuestionDB WHERE TopicID = "'.$topic.'"';

$sql = "SELECT * FROM QuestionDB WHERE TopicID = '$topic'" ;

重要提示:您的代码容易受SQL injections攻击,并可能危及数据库的安全性。您应该使用PDOmysqli API来保护您的SQL查询,并使用prepare函数。