【问题标题】:How to declare a variable如何声明一个变量
【发布时间】:2014-04-03 16:42:46
【问题描述】:

我有问题未定义的变量。问题是,我找到了一个制作类型微博Twitter的教程,遇到了一些问题,我决定了,但这需要我的耐心。

错误信息:

注意:未定义的变量:caminho\do\arquivo\functions.php 中第 58 行的额外变量

功能:

功能 show_users($user_id=0){ 如果($user_id > 0){ $follow = 数组(); $fsql = "SELECT user_id FROM 以下 WHERE follower_id='$user_id'"; $fresult = mysql_query($fsql); 而($f = mysql_fetch_object($fresult)){ //array_push($follow, $f->user_id); $follow[] = $f->user_id; } 如果(计数($follow)){ $id_string = implode(',', $follow); $extra = " AND id IN ($id_string)"; }别的{ 返回数组(); } } $users = 数组(); $sql = "SELECT id, username FROM users WHERE status='active' $extra ORDER BY username"; $result = mysql_query($sql); 而 ($data = mysql_fetch_object($result)){ $users[$data->id] = $data->用户名; } 返回$用户; }

有问题的行是:

$sql = "SELECT id, username FROM users WHERE status='active' $extra ORDER BY username";

有什么建议吗?

【问题讨论】:

  • echo $extra; 并在您的问题中添加此输出

标签: php mysql sql function


【解决方案1】:
function show_users($user_id=0){
 $extra = ''; //if no extra, you'll get just an empty string
 //etc...
}

【讨论】:

  • 你能解释一下你到底做了什么改变吗?
  • 我认为这不是问题。 if if (count($follow)){ return false then 函数将返回 else $extra 将分配
  • 这是坏人,另一个答案并解释了问题。
  • @AwladLiton 如果 marcello 使用了这个代码,那真是令人震惊
【解决方案2】:
function show_users(...) {
   $extra = ''; // <--just add this line
   blah blah blah blah blah
}

在您的代码中,仅当两个 if() 测试都成功时,才定义 $extra。显然它们不是,所以你最终会在你的 sql 字符串中得到一个未定义的 $extra。

【讨论】:

  • 我认为这不是问题。如果 if (count($follow)){ 返回 false 则函数将返回否则 $extra 将分配
  • 如果if() 不成功则返回空数组。
  • 显然它没有返回,否则永远不会到达 sql,所以 $extra 仍然没有定义,因为整个 if() 从未到达。
【解决方案3】:

有两种方法:

1. function show_users($user_id=0){
   $extra='';

2. function show_users($user_id=0,$extra=''){

实际上,您仅在 $user_id > 0 时才声明 $extra,但对于当前情况,您的 $user_id 必须等于或小于 0,因此您的查询无法找到 $extra。

我希望你有一个想法。

【讨论】:

    【解决方案4】:
    function show_users($user_id=0,extra='') // use this
            {    
        if ($user_id > 0){
            $follow = array();
            $fsql = "SELECT user_id FROM following WHERE follower_id='$user_id'";
            $fresult = mysql_query($fsql);
    
            while($f = mysql_fetch_object($fresult)){
                //array_push($follow, $f->user_id);
                $follow[] = $f->user_id;
            }
            if (count($follow)){
                $id_string = implode(',', $follow);
                $extra =  " AND id IN ($id_string)";
            }else{
                return array();
            }
        }
    

    【讨论】:

    • 在extra之前错过了$,应该是$extra
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多