2012-08-08 3 views
1

테이블의 행을 표시하고 싶지만 작동하지 않으며 아무 것도 울리지 않습니다.MySQLi - 배열 및 준비된 문 가져 오기

$query = "SELECT * FROM table ORDER BY date DESC LIMIT ?, 10"; 
$stmt = $mysqli->stmt_init(); 
if ($stmt->prepare($query)) { 

    $stmt->bind_param("i", $row_start); 
    $stmt->execute(); 
    $stmt->bind_result($result); 
    $stmt->fetch(); 
    $stmt->close(); 
} 
while($row = mysqli_fetch_array($result)) { 
    echo $row['title']; 
} 

나는 오래된 mysql ext를위한 코드를 가지고 있으며 작동한다. mysqli를 사용하여 동일한 결과를 얻으려고합니다.

+3

마침내'fetch_array()'는 prepared statement와는 작동하지 않습니다. 'bind_result()'를 사용하면 전체 프로세스가 훨씬 복잡해집니다. 가능한 경우 MySQLi를 통해 PDO를 사용하는 주된 이유 중 하나입니다. – DaveRandom

+1

@DaveRandom 나는 MySQLi가 원래 ext의 개선 된 버전이라고 생각했다 ... 그런 제한이 있다는 것을 몰랐다. PDO로 옮겨야한다고 생각합니다. – xperator

답변

0

아래 링크이 읽기 : - 각을 제공하는 것처럼

Mysqli abstraction, fetching arrays from prepared statements

call_user_func_array (...) 함수는 단지, 지정된 배열로 $ 쿼리 개체에 bindParam 또는 bind_result 메소드를 호출 요소를 메서드 인수로 사용합니다.

아래 코드를 사용하면 문제가있는 SQL 문을 검사 할 수 있습니다. 원래 코드는 추상화 계층의 명령문 클래스에 따라 다르므로 완전히 테스트 할 수 있도록 약간 다시 작성했습니다.