2016-10-04 57 views
0

內沒有工作之後第一次劇本工作做好,並與數據返回多行。但是,當我試圖在函數中使用此代碼顯示在第二個劇本,我不能出去放數據,但它返回的行數,我試圖用一個返回數組(),如圖here但我仍然無法弄清楚上班。非常感謝。第1位代碼的mysqli bind_result,然後得到的結果取使用() - 函數

<?php 
// 1st code 
$stmt = $mysqli -> prepare (" SELECT Name, City FROM user_db WHERE id = ? ") ; 
$stmt -> bind_param ('s', $id) ; 
$stmt -> execute() ; 
$stmt -> store_result() ; 
$stmt -> bind_result ($name1, $city1 ) ; 
while ($stmt -> fetch()) { echo $name1 .'-'. $city1 .'<br>' ; } 

結果

name1-city1 
name2-city2 
name3-city3 

第二碼 - 使用第一代碼的函數的第二個代碼

function test ($mysqli , $id) { 
    $stmt = $mysqli -> prepare (" SELECT Name, City FROM user_db WHERE id = ? ") ; 
    $stmt -> bind_param ('s', $id) ; 
    $stmt -> execute() ; 
    $stmt -> store_result() ; 
    $stmt -> bind_result ($name, $city ) ; 
    return $stmt; 
} 

$stmt = test ($mysqli , $id); 

while ($data = $stmt -> fetch()) { 
    echo $name .'-'. $city .'<br>' ; 
} 

結果調用該函數後

- 
- 
- 
+0

那些約束變量超出範圍,只是把功能的陣列內推動內取出,然後讓該容器 – Ghost

+0

@Ghost,我做回感覺他們是與功能的迴歸有關,但我不夠了解它,並做你的建議,我是相當新的領域,一個小代碼的小解釋將非常感謝 – Nira

回答

0

bind_result給了我同樣的結果第一個腳本,它是我一直在尋找,但我仍然不明白爲什麼上述第二腳本無法正常運行

呼叫功能

$語句=測試($ mysqli的,$ id)的解決方案;

然後bind_result的聲明

$語句 - > bind_result($名稱,$市);

0

對於上帝的份上,使用PDO

function test ($db , $id) { 
    $stmt = $db->prepare ("SELECT Name, City FROM user_db WHERE id = ?") ; 
    $stmt->execute([$id]); 
    return $stmt->fetchAll(); 
} 

$data = test ($pdo, $id); 

foreach ($data as $row) { 
    echo $row['Name'] .'-'. $row['City'] .'<br>' ; 
} 
+0

我是新的,仍然不熟悉PDO。我知道他們是使用mysqli做到這一點的其他方法,但我想知道爲什麼我的代碼在函數內部不起作用? – Nira

+0

你已經在問題的第一個評論中得到了答案。 –

+0

並且談到PDO,**你也不熟悉mysqli,是嗎?那麼爲什麼不開始學習正確的工具,如果你還沒有開始學習呢? –