2009-04-03 3 views
0

http://php.morva.net/manual/en/mysqli-stmt.bind-result.php의 다음 코드는 mysqli 쿼리가 준비되고 실행되는 것을 보여줍니다. while ($ stmt-> fetch()) 루프는 결과 리소스를 생성하는 것처럼 보입니다. 예 : 함수 호출을 포함하도록이를 변경할 수 있습니까?MySQL - 결과를 반환하기 전에 PHP 함수를 통해 데이터베이스 필드를 전달합니다.

while ($stmt->fetch()) { 
     foreach($row as $key => $val) 
     { 
      $c[$key] = performFunction($val); 
     } 
     $result[] = $c; 
    } 

그런 다음 print_r ($ result) 대신 ($ result)를 반환합니다. 나는 동적으로 $ 발
원래 코드의 값을 변경할 수 있습니다 그 방법 =

if ($stmt = $mysqli->prepare("SELECT * FROM sample WHERE t2 LIKE ?")) { 
    $tt2 = '%'; 
    $stmt->bind_param("s", $tt2); 
    $stmt->execute(); 

    $meta = $stmt->result_metadata(); 
    while ($field = $meta->fetch_field()) 
    { 
     $params[] = &$row[$field->name]; 
    } 

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

    while ($stmt->fetch()) { 
     foreach($row as $key => $val) 
     { 
      $c[$key] = $val; 
     } 
     $result[] = $c; 
    } 
    $stmt->close(); 
} 
$mysqli->close(); 
print_r($result); 

이 작품, 나는이 어떻게 다른 사람을 할 수있는 것인가?
모두 감사합니다 ...

답변

1

PHP를 다시 사용하기 전에 UDF (User Defined Function)를 사용하여 MySQL 측면의 데이터를 처리 할 수 ​​있습니다.

0

샘플 구현 코드가 제대로 작동하지 않을 것으로 생각 되더라도 완벽하게 유효한 방법입니다. 아마도 mysqli_result 객체를 가져 오는 것이 더 좋을 것이다. fetch_assoc을 호출하고 그 결과로 생성 된 연관 배열을 결과 집합으로 푸는 것이 더 바람직하다.

+0

감사합니다 Kalium, 결과 집합에 결과 연관 배열을 밀어 넣으라고했습니다 ... assoc 배열을 결과 집합에 푸시하는 샘플 코드를 제공 할 수 있습니까? 그래서 각 행을 얻기 위해 mysqli_result :: fetch_assoc()을 사용할 것인가? 그런 다음 행에 함수를 수행합니까? 결과 집합에 행을 다시 밀어 넣는 방법은 무엇입니까? – undefined

+0

mysql을 사용하여이 작업을 수행 할 수 있습니까? MySQL 버전 5.0.22가 있습니다. mysqli 명령이 오류를 반환합니다. 예를 들어 "정의되지 않은 함수 mysqli_connect()"로 호출합니다. – undefined

+0

mysqli 확장이 설치되어 있지 않기 때문입니다. 연관 배열을 결과 집합으로 푸시 (push) 할 수 있습니다 : $ results [] = $ associativeArray; – Kalium

관련 문제