2011-08-10 11 views
2

我的PHP不是很好,我正在努力處理可能非常簡單的事情。基本上我有以下代碼,如果發現1行,我想將結果設置爲$ aPrds,我該怎麼做?PHP mysqli返回行並設置爲var幫助

$stmt = $db->prepare("select * from products where id=?"); 
$stmt->bind_param("s", $_GET['id']); 

if($stmt->execute()) 
{ 
    $stmt->store_result(); 
    echo $stmt->num_rows; 
    if($stmt->num_rows==1) 
    { 
    //SET RETURNED ROW TO aPrds 

    } 
    else 
    { 
    echo "no results or too many found"; 
    } 
} 
else 
{ 
    echo "sql invalid"; 
} 

------------------ UPDATE ------------

我也曾嘗試下面的代碼一直未果(返回(NULL)):

  $stmt = $db->prepare("select productid, product_name, description from product where productid=?"); 
      $a=1; 
      $stmt->bind_param("i", $a); 
      if($stmt->execute()){ 
       $stmt->store_result(); 
       if($stmt->num_rows==1){ 
        $stmt->bind_result($b, $c, $d);   
        print_r($b); 
        print_r($c); 
        print_r($aPrds); 
       }else{ 
        echo "no result or more than 1 returned"; 
       } 
      }else{ 
       echo "invalid sql"; 
      } 

請注意,我已經測試過的SQL和它的作品,也是$ DB的mysqli連接肯定是工作。

+0

$ aPrds是VAR的我想回該行。 – Dino

回答

4

我認爲你正在尋找get_resultfetch_assoc方法:

// .... 
$result = $stmt->get_result(); 
$aPrds = $result->fetch_assoc(); 
// .... 

編輯:

顯然,這些功能尚未公佈(應該已經測試了這一點,對不起)。所以這個測試:

function bind_array($stmt, &$row) { 
    $md = $stmt->result_metadata(); 
    $params = array(); 
    while($field = $md->fetch_field()) { 
     $params[] = &$row[$field->name]; 
    } 

    call_user_func_array(array($stmt, 'bind_result'), $params); 
} 

// .... 

if($stmt->execute()) { 
    bind_array($stmt, $row); 
    $stmt->fetch(); 

    print_r($row); 

    // .... 

而且你第二個解決方案還應該工作,如果你$stmt->bind_result($b, $c, $d);後添加$stmt->fetch()

+0

嗨我試圖添加兩行,但我似乎只有(null)當我print_r($ aPrds),我已經測試了SQL和工作正常。所以我很難過。 請注意我已經添加了上面的另一個代碼塊來顯示我嘗試過的替代代碼。 – Dino

+0

感謝您的反饋。我已經添加了一個我已經測試過的新解決方案,所以它應該可以工作。 – vstm

+0

我試着用wile stms-> fetch(),但是它跳過了第一條記錄。我們如何循環所有結果記錄? – Lamar