你好我想用返回数据创建函数,例如当我有函数广告时我想让它每次显示我需要的东西,我有表id,sub_id,name,date,我想要创建每次我需要广告(id),广告(名称)时,我可以打印的功能,我想让它每次都显示我需要的东西,我想把我的所有结果保存在数组中,每次都抓住正是我想要的行
<?php
function advert($data){
$id = $_GET['id'];
$query = mysql_query("SELECT *FROM advertisement WHERE id = $id");
while($row = mysql_fetch_assoc($query)){
$data = array(
'id' => $row['id']
);
}
return $data;
}
echo advert($data['id']);
?>
但我的结果每次都是空的,你能帮帮我吗?
答案 0 :(得分:1)
这段短代码中存在很多缺陷,唯一的好建议是获得一些初学者教程。但我会付出一些努力来解释一些事情。希望它会有所帮助。
第一步是行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
。但就目前而言,我只会使用您的代码。
仅向$data
数组添加ID似乎没用,但我想您了解如何从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
}
答案 1 :(得分:0)
是否要在返回结果中显示特定列值,如果您像Id一样传递,则只想返回Id列数据。 循环遍历行数组的所有键,并与传入的列名称匹配,您可以获取值并打破循环。
点击此链接:php & mysql - loop through columns of a single row and passing values into array
答案 2 :(得分:-1)
您已将ID作为函数参数传递。同时在*
和FROM
之间添加空格。
请按以下方式使用。
$query = mysql_query("SELECT * FROM advertisement WHERE id = '".$data."'");
或强>
function advert($id)
{
$query = mysql_query("SELECT * FROM advertisement WHERE id = '".$id."'");
$data = array();
while($row = mysql_fetch_assoc($query))
{
$data[] = $row;
}
return $data;
}
请勿使用mysql_*
,因为不推荐使用PDO
或MYSQLI_*
答案 3 :(得分:-1)
试试这个:
<?php
function advert($id){
$data= array();
//$id = $_GET['id'];
$query = mysql_query("SELECT *FROM advertisement WHERE id = $id");
while($row = mysql_fetch_assoc($query)){
array_push($data,$row['id']);
}
return $data;
}
var_dump($data);
//echo advert($data['id']);
?>