0

你好,我想创建带有返回数据的函数,例如,当我有函数广告时,我想让它每次都显示我需要的内容,我有表 id、sub_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

4 回答 4

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。但是现在,我将只使用您的代码。

仅将 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
}
于 2013-03-25T11:36:22.243 回答
0

您是否想在返回结果中显示特定列的值,例如如果您作为 Id 传递,您只想返回 Id 列数据。循环遍历行数组的所有键并与传入的列名称匹配,您可以获得值并打破循环。

检查此链接:php & mysql - 遍历单行的列并将值传递到数组

于 2013-03-25T11:16:33.490 回答
-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']);
?>
于 2013-03-25T11:07:49.163 回答
-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_*

于 2013-03-25T11:06:27.580 回答