2010-04-29 2 views
2

SELECT 쿼리에 입력 매개 변수를 바인드하고 결과 행을 가져 오려고하지만 MySQLi가 익숙한 다른 API와 다른 것처럼 보입니다. PHP 매뉴얼.바인드 변수를 사용하는 SELECT 쿼리의 예

다음 접근 방법이 맞습니까?

$sql = 'SELECT product_id, product_name, area_id 
    FROM product 
    WHERE product_id = ?'; 
$stmt = $myMySQLi->prepare($sql); 
if(!$stmt){ 
    throw new Exception('Prepare error'); 
} 
if([email protected]$stmt->bind_param('i', $product_id)){ 
    throw new Exception('Bind error'); 
} 
if(!$stmt->execute()){ 
    throw new Exception('Execute error'); 
} 

그렇다면 어떻게 연관 배열로 행을 가져 옵니까? 내가 그것을 과장한다면, 어떻게 진행해야합니까?

답변

3

mysqli가 배열로 결과를 가져올 수있는 방법을 제공하지 않습니다. 이 기능을 원하는 경우 두 가지 옵션이 있습니다

  1. mysqli를 확장하고 지금부터 fetchAll 방법을
  2. 사용 PDO 쓰기를

힌트 :

그냥 만들려고 사용 PDO 당신의 삶이 더 쉽다.

read this

+0

MySQLi_Result :: fetch_assoc()처럼 한 번에 모든 행을 의미하지는 않았습니다. 링크를 가져 주셔서 감사합니다 : 나는 MySQLi_STMT에서 MySQLi_Result를 얻을 수있는 방법을 찾을 수 없으며 그렇게 될 것 같습니다 ... 할 수 없습니다! 프로젝트가 초기 단계에 있으며 여전히 MySQLi를 제거 할 수 있다는 하나님 감사합니다. –

+0

만약 당신이 pdo로 갈 수있는 나는 그것을 적극 권장합니다. – Galen

+0

나는 MySQLi를 버렸다. 나는 더 이상이 프로젝트를 연기 할 수 없으므로 정규 MySQL 기능 위에 구축 된 나의 훌륭한 기존 사용자 정의 클래스에 집중할 것입니다. 다음 프로젝트에서는 PDO에 시험해 보겠습니다. –

3

당신이 변수에 결과를 매핑 할 수 bind_result 사용 :

$stmt->bind_result($product_id, $product_name, $area_id); 
while ($stmt->fetch()) { 
    echo $product_id . ": " . $product_name; 
} 
+0

는 오 ... 그건 ... 내가 MySQLi를 사용하고 난 이미 뼈에 싫어 처음으로 이렇게 원시적입니다. 감사. –

관련 문제