2015-01-20 3 views
0

mysql을 사용하여 저장 프로 시저를 실행하려고 시도한 적이 있습니다. 내가정상적인 MYSQL이 PDO를 묻는 데 작동하지 않습니다

$link_id = DbConnection::getInstance('mycon')->connectMysql(); 

$table_count = mysql_query("SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = 'mycon' AND table_name LIKE 'table_%' ") 

while($row = mysql_fetch_array($table_count)){ 
$table = $row["TABLE_NAME"]; 
    $excute = mysql_query("dummy_2('$table')") or die(mysql_error()); 
    $result = mysql_fetch_assoc($excute); 
    var_dump($result); 
} 

아래의 코드를 사용할 때마다 그것이 내가 .. 따라서 사람이 내 위를 변환 할 수 있습니다 MYSQL PDO를 사용할 필요가 있다고, 내가 인터넷을 검색 할 때 너무

Commands out of sync; you can't run this command now 

말하는 오류를 제공합니다 문을 mysql pdo .. 이후 나는 PDO에 대해 전혀 모른다.

+0

를 참조하십시오. 이 이상한'DbConnection' 클래스가 있는데, DB 자격 증명이 어디에 있는지 알지 못합니다 .... 당신은 또한 mysql_fetch_array를 사용합니다. 그러나 ..... 후에 그것을 수행 할 쿼리가 없습니다. 우리에게 더 많은 코드 –

+2

코드를 PDO로 이식하려고하지 마십시오. 실수하는 것을 두려워하지 마라. 어쨌든 리소스가 부족하지는 않습니다. – Ghost

+0

설명서를 확인하십시오. http://php.net/manual/en/book.pdo.php – Bandon

답변

3

MySQL 데이터베이스에서 무언가를 쿼리하면 결과가 결과 집합으로 표시된다. 실제로 일부 쿼리에는 여러 결과 집합이 연결되어있을 수 있습니다. 그러나 연결 당 하나의 활성 결과 목록 집합 만있을 수 있습니다. 나는. 당신은 다른 쿼리를 발행하기 전에 어떻게 든 현재 활성 결과 집합을 모두 닫아야합니다.
예 : 저장된 함수는 여러 SELECT를 사용합니다.이 함수는 여러 결과 집합을 가지고 있으므로 모두 반복/닫기/드롭해야합니다.

http://dev.mysql.com/doc/refman/5.1/en/stored-routines-syntax.html

:

MySQL은 저장 프로 시저 내부 (커서 또는 로컬 변수를 사용하지 않고) 일반 SELECT 문을 사용할 수 있도록 매우 유용한 확장 기능을 지원합니다. 이러한 쿼리의 결과 집합은 클라이언트에 직접 전송됩니다. 여러 SELECT 문은 여러 결과 집합을 생성하므로 클라이언트는 여러 결과 집합을 지원하는 MySQL 클라이언트 라이브러리를 사용해야합니다.

옛날, mysql_ * 함수는 다중 결과 세트를 지원하지 않습니다. 단지 반복/삭제할 수 없습니다.
내가 _ * 확장 않습니다 MySQL의 : http://docs.php.net/mysqli.next-result
을 볼 그래서 PDO는 않습니다 : 우리는 당신이 MySQL의 연결을 시작하는 방법을 모르는 http://docs.php.net/pdostatement.nextrowset.php

관련 문제