这段简短的代码有很多缺陷,唯一的好建议是获得一些初学者教程。但我会努力解释一些事情。希望它会有所帮助。
第一步是行function advert($data)
,您将参数传递$data
给方法。现在稍后您将$data
在返回字段中使用相同的变量。我猜你试图让函数知道你想填充什么变量,但这不是必需的。
如果我正确理解您要做什么,我会传入$id
参数。然后,您可以使用此函数根据您提供的 ID 获取数组,并且它不必总是来自查询字符串(尽管它可以)。
function advert($id) {
}
现在我们有了基础设置,我们想从数据库中获取信息。您的代码可以工作,但它也容易受到 SQL 注入的攻击。由于这本身就是一个主题,我建议您使用谷歌查找有关该主题的信息。现在我只想说你需要验证用户输入。在这种情况下,您需要一个 ID,我假设它是数字的,因此请确保它是数字的。我还假设你有一个整数 ID,这样就可以了。
function advert($id) {
if (!is_int($id))
return "possible SQL injection.";
}
然后我再做一个假设,那就是 ID 是唯一的,您只希望返回 1 个结果。因为只有一个结果,所以我们可以LIMIT
在查询中使用选项,不需要while
循环。
还要记住,mysql_
函数已被弃用,不应再使用。尝试切换到mysqli
或PDO
。但是现在,我将只使用您的代码。
仅将 ID 添加到$data
数组中似乎没有用,但我想您了解如何从 SQL 表中添加其他列。
function advert($id) {
if (!is_int($id))
return "possible SQL injection.";
$query = mysql_query("SELECT * FROM advertisement WHERE id = $id LIMIT 1");
$row = mysql_fetch_assoc($query);
$data = array(
'id' => $row['id']
);
return $data;
}
为了不调用这个方法,我们可以像这样使用 GET 参数。请注意,回显数组很可能不会给您想要的结果。我会将结果存储在一个变量中,然后继续使用它。
$ad = advert($_GET['id']);
if (!is_array($ad)) {
echo $ad; //for sql injection message
} else {
print_r($ad) //to show array content
}