2011-08-10 9 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 ------------

Iはまた、次のコードを試してみました(リターン(ヌル))失敗した:$デシベルのmysqliの接続が確実に働いているにも、私はSQLをテストしてきたし、それが動作することに注意してください

  $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"; 
      } 

してください。

+0

$ aPrds後$stmt->fetch()を追加した場合も動作するはずです私は、行を返すしたい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);

+0

こんにちは私は2行を追加しようとしましたが、print_r($ aPrds)のときには(null)を取得するようですが、SQLをテストしてfine.Soを処理しました。 私が試した代替コードを表示するために上記の別のコードブロックを追加しました。 – Dino

+0

フィードバックいただきありがとうございます。私はテストした新しいソリューションを追加したので、うまくいくはずです。 – vstm

+0

wile stms-> fetch()を使用しようとしましたが、最初のレコードをスキップしています。どのようにすべての結果レコードをループすることができますか? – Lamar