2016-03-28 3 views
-6

この関数は1行しか返さないのですが、複数の行を返すように関数を変更するにはどうすればよいですか?この関数を使ってmysqlとPHPから複数の行を取得する方法

public function getVisitors($UserID) 
{ 
$returnValue = array(); 
$sql = "select * from udtVisitors WHERE UserID = '".$UserID. "'"; 

$result = $this->conn->query($sql); 
if ($result != null && (mysqli_num_rows($result) >= 1)) { 
$row = $result->fetch_array(MYSQLI_ASSOC); 
if (!empty($row)) { 
$returnValue = $row; 
} 
} 
return $returnValue; 
} 
+0

固定量の行または選択したすべての行? – itzmukeshy7

+0

すべての選択された行、私は前に@ HankyPankyを送ってみましたが、配列内の1行を取得します –

答えて

0

私は連想配列に格納することをお勧め:あなたはまだ、すべて呼び出すことができます

echo $returnValue[0]['column1']; /* CALL THE column1 ON THE FIRST SET OF ARRAY */ 
echo $returnValue[3]['column2']; /* CALL THE column2 ON THE FOURTH SET OF ARRAY */ 

:あなたは戻り値を呼び出すと

$returnValue = array(); 

while($row = mysqli_fetch_array($result)){ 

    $returnValue[] = array('column1' => $row['column1'], 'column2' => $row['column2']); /* JUST REPLACE NECESSARY COLUMN NAME AND PREFERRED NAME FOR ITS ASSOCIATION WITH THE VALUE */ 

} /* END OF LOOP */ 

return $returnValue; 

すると、あなたのような何かを行うことができます値をループで返します。

$counter = count($returnValue); 

for($x = 0; $x < $counter; $x++){ 
    echo '<br>'.$rowy[$x]['column1'].' - '.$rowy[$x]['column2']; 
} 
+1

これは**既存の連想配列**から連想配列を作成するのに最も役に立たない方法です。 –

+0

@YourCommonSense - LOL!あなたが正しい! –

1

そうするmysqliの中の関数があり、(fetch_allと呼ばれる)、そう、文字通り、あなたの質問に答えるために、それは

public function getVisitors($UserID) 
{ 
    $sql = "select * from udtVisitors WHERE UserID = ".intval($UserID); 
    return $this->conn->query($sql)->fetch_all(); 
} 

だろうあなたが上がらないのでしかし、これは権利ではないでしょう準備されたステートメントを使用しています。したがって、適切な関数は次のようになります

public function getVisitors($UserID) 
{ 
    $sql = "select * from udtVisitors WHERE UserID = ?"; 
    $stmt = $mysqli->prepare($sql); 
    $stmt->bind_param("s", $UserID); 
    $stmt->execute(); 
    $res = $stmt->get_result(); 
    return $res->fetch_all(); 
} 
+0

完全に働いており、ありがとうございます。 –

関連する問題