php函数在数组中保存结果

时间:2013-03-25 11:03:53

标签: php arrays function

你好我想用返回数据创建函数,例如当我有函数广告时我想让它每次显示我需要的东西,我有表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']);
    ?>

但我的结果每次都是空的,你能帮帮我吗?

4 个答案:

答案 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_函数已弃用,不应再使用。尝试切换为mysqliPDO。但就目前而言,我只会使用您的代码。

仅向$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_*,因为不推荐使用PDOMYSQLI_*

答案 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']);
?>