【问题标题】:$ROW = Undefined?$ROW = 未定义?
【发布时间】:2016-03-18 17:55:51
【问题描述】:

我明白了

“未定义变量:行”为以下代码在“return ($row);”处

$ROW 不是在 $ROW[] = Array(...) 定义的吗?

 <?php
    function fetchImageState(){
        $state = $_GET['state'];
        global $mysqli,$db_table_prefix;
        $stmt = $mysqli->prepare("SELECT athletedetails.UserID,
    	athletedetails.State_Code,
    	filesrepository.user_id,
    	filesrepository.new_file_name,
    	filesrepository.file_ID
    FROM athletedetails INNER JOIN filesrepository ON athletedetails.UserID = filesrepository.user_id
    WHERE athletedetails.State_Code = '$state'
      ");
        $stmt->execute();
        $stmt->bind_result($UserID, $statecode, $user, $file_id, $new_file_name);
        while ($stmt->fetch()){
            $row[] = array(
                'userID' => $UserID,
                'state' => $statecode,
                'user' => $user,
                'fileid' => $file_id,
                'newfilename' => $new_file_name);
        }
        $stmt->close();
        return ($row);
    }
?>

【问题讨论】:

  • 不应该是while ($row = $stmt-&gt;fetch()){还是直接用fetch_all?您也可以使用此代码进行 SQL 注入。
  • @chris85 感谢您的输入,此代码用于课程,我们被告知不要太担心安全性。完全意识到“获取”代码不是好的做法。但再次感谢!

标签: php html mysql mysqli


【解决方案1】:

$row 需要在 while 语句之前定义。目前只存在于while语句范围内,返回前销毁。

注意 $row 可能不包含您期望返回的值。但我也不经常使用 PHP,而且可能。

【讨论】:

    【解决方案2】:

    正如Stevoni 所说,您应该在while 循环之前声明$row 数组。但是,这并不是范围问题。您的 $stmt-&gt;fetch() 可能返回 false,因此永远不会进入 while 循环中的块,因此永远不会创建 $row 变量。

    【讨论】:

      猜你喜欢
      • 2014-08-24
      • 2023-04-06
      • 1970-01-01
      • 2016-06-23
      • 2016-05-09
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多