Не могу передать строку в хранимую процедуру MySQL, используя adodb - PullRequest
0 голосов
/ 09 декабря 2011

Я использую adodb5 для вызова этой хранимой процедуры, но MySQL не понимает, что $ sealID - это строка .

$db = NewADOConnection('mysql://'.DB_USER.':'.DB_PASS.'@'.DB_SERVER.'/'.DB_NAME);
$sql = "CALL GetSeal($userID, $sealID, @result)";
$r = $db->Execute($sql);

Когда я запускаю этот php из оболочки.

TestGetSealProc.php 3155011 ZZZZNLJSAYGZECWY

MySQL сообщает:

Unknown column 'ZZZZNLJSAYGZECWY' in 'field list'

ZZZZNLJSAYGZECWY следует понимать как строку, а не как столбец. Как это исправить?

Обновление: первая часть моего сохраненного процесса.

    CREATE DEFINER=`root`@`localhost` PROCEDURE `GetSeal`(IN userID INT, IN sealID char(16), OUT result INT)
    BEGIN

        DECLARE imageCnt INT;
        DECLARE pointCnt INT;
        DECLARE puriCode varchar(256);
        DECLARE newImgID INT;
....

        DECLARE c_data CURSOR FOR
            SELECT TELEPHONE_NUMBER, IMG_FILENAME, SELECTION_FLG, PHOTOGRAPH_DATE, SEND_DATE
            FROM re_photograph_imgs
            WHERE SEAL_NUMBER = sealID
            AND IMG_FILENAME IS NOT NULL
            AND IMG_FILENAME != "";

......................

1 Ответ

1 голос
/ 09 декабря 2011

Не забывайте цитаты.Без них пустая строка будет интерпретироваться как имя поля:

$sql = "CALL GetSeal($userID, '$sealID', @result)";
                              ^       ^
...