Процедура ожидает параметр, который не был предоставлен

Предупреждение: mysql_fetch_array () ожидает, что параметр 1 является ресурсом, boolean given

Прежде всего:

Пожалуйста, не используйте mysql_* функции в новом коде . Они больше не поддерживаются и официально устарели . См. Красную рамку ? Узнайте о подготовленных операторах и используйте PDO или MySQLi - в этой статье , которые помогут вам решить, какой из них. Если вы выберете PDO, вот хороший учебник .


Это происходит, когда вы пытаетесь получить данные из результата mysql_query, но запрос

Это предупреждение и не остановит скрипт, но сделает вашу программу неправильной.

Вам нужно проверить результат, возвращенный mysql_query, на

$res = mysql_query($sql);
if (!$res) {
   die(mysql_error());
}
// after checking, do the fetch

Вопросы, относящиеся

Связанные ошибки:

Другие функции mysql*, которые также ожидают, что ресурс результата mysql в качестве параметра приведет к той же ошибке для такой же причина.

101
задан Safa 31 January 2017 в 09:49
поделиться

4 ответа

Я проверил бы свой код приложения и видел бы то, что оценивает Вас, устанавливают @template на. Я подозреваю, что это является пустым в этом и заключается проблема.

82
ответ дан HLGEM 24 November 2019 в 04:34
поделиться

Если Шаблон не будет установлен (т.е. == пустой указатель), эта ошибка будет повышена, также.

[еще 111] комментарии:

, Если Вы знаете значение параметра к тому времени, когда Вы добавляете параметры, можно также использовать AddWithValue

, ДОЛЖНОСТНОЕ ЛИЦО не требуется. Можно сослаться на @template параметр в ВЫБОРЕ непосредственно.

3
ответ дан devio 24 November 2019 в 04:34
поделиться

Сначала - почему это - ДОЛЖНОСТНОЕ ЛИЦО? Это не должно только быть

AS
SELECT Column_Name, ...
FROM ...
WHERE TABLE_NAME = @template

, текущий SP не имеет смысла? В частности, это искало бы столбец , соответствующий @template, не varchar значение @template. т.е. если бы @template 'Column_Name', он искал бы WHERE TABLE_NAME = Column_Name, который очень редок (иметь таблицу и столбец, названный тем же).

кроме того, если Вы делаете , должны использовать динамический SQL, необходимо использовать EXEC sp_ExecuteSQL (хранение значений как параметры) для предотвращения от инжекционных нападений (а не конкатенация входа). Но это не необходимо в этом случае.

Ре фактическая проблема - это смотрит хорошо от взгляда; действительно ли Вы уверены, что у Вас нет различной копии SP бродящей вокруг? Это - распространенная ошибка...

0
ответ дан Marc Gravell 24 November 2019 в 04:34
поделиться

Кроме того к другим ответам здесь, если вы забыли указать:

cmd.CommandType = CommandType.StoredProcedure;

Тогда вы также получите эту ошибку.

284
ответ дан 24 November 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: