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

은 또한 다음과 같은 코드를 시도하는 가되어 실패 (반환 (널)) :

  $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 연결이 확실히 작동하고, 작동 있습니다.

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

편집

:

은 분명히 이러한 기능 (죄송합니다,이 테스트해야)를 사용할 수없는 경우

+0

$ aPrds 내가 행을 반환하고 싶은 var에있다 $stmt->bind_result($b, $c, $d);$stmt->fetch()를 추가하는 경우 두 번째 솔루션은 작동합니다 : 그래서이 테스트됩니다. – Dino

답변

4

나는 당신이 get_resultfetch_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); 

    // .... 

을 그리고 당신은

+0

안녕하세요 두 줄을 추가하려고했지만 print_r ($ aPrds) 때만 (null) 얻을 것, 나는 SQL 테스트 한 및 fine.So 내가 잘난척 작동합니다. 참고 다른 코드를 추가하기 위해 위에 다른 코드 블록을 추가했습니다. – Dino

+0

의견을 보내 주셔서 감사합니다. 테스트 한 새로운 솔루션을 추가 했으므로 작동해야합니다. – vstm

+0

wile stms-> fetch()를 사용하려고 시도했지만 첫 번째 레코드를 건너 뜁니다. 어떻게 모든 결과 레코드를 반복 할 수 있습니까? – Lamar