Странная проблема с процедурами mysql и подключением к базе данных PHP - PullRequest
1 голос
/ 05 января 2010

У меня есть два совершенно отдельных запроса, которые были переданы процедурам. Когда это были специальные запросы, они работали отлично, но теперь, когда я их сохранил, все стало странным.

PHP вызывает метод класса, который возвращает значения одного из процедур. Второй метод тогда вызывается и терпит неудачу. Когда я запускаю команду proc, которую PHP мне не дает, прямо из командной строки, он дает мне результаты просто отлично. Это, конечно, странно.

Может кто-нибудь сказать мне, если я что-то упустил? Я был бы рад опубликовать некоторый код, но в интересах экономии времени я решил спросить и посмотреть, является ли это распространенной проблемой в первую очередь.


Это функция, которая соединяет;

function connect()
{
    $conn = mysql_connect($host, $user, $pass);
    if(!$conn){
        echo 'Error: cannot connect';
    }else{
        $selectDB();
    }
}

Это провал, который не работает:

BEGIN
SELECT name FROM source ORDER BY name ASC;
END

Это первый процесс, который возвращает результаты.

BEGIN
SELECT cpw, cpw_id FROM cpw ORDER BY cpw ASC;
END

Ответы [ 3 ]

0 голосов
/ 05 января 2010

Просмотр кода позволит получить более конкретную помощь, но вы уже проверили наличие конфликтов имен переменных в процессах, которые могут перезаписывать ваши учетные данные подключения?

0 голосов
/ 05 января 2010

В случае, если вы отправили function connect() реальный код (а не сокращенную версию для SO), у вас возникла «проблема» с переменной области действия PHP (и временем жизни). $ host, $ user и $ pass неизвестны внутри функции. То есть эффективно mysql_connect(null, null, null); выполняется, и расширение php-mysql пытается установить соединение по умолчанию в соответствии с параметрами ini mysql.default_host, mysql.default_user и mysql.default_password.

Если вы установите для сообщения об ошибке значение E_ALL (например, через error_reporting(E_ALL) до вызова функции), вы должны получить некоторые сообщения «неопределенная переменная».

0 голосов
/ 05 января 2010

Без первого просмотра кода трудно сказать. Я могу заверить вас, что это не нормальное поведение. Из вашего комментария к OP может показаться, что ваши пользовательские учетные данные не выполняются после первого запроса. Я бы проверил, чтобы убедиться, что ничто не перезаписывает их или изменяет их между запросами.

На этом этапе было бы полезно увидеть фрагмент кода, который устанавливает соединение и вызывает процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...