Какие простые изменения делали самые большие улучшения Ваших программ Delphi [закрытыми]

Предупреждение: 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 в качестве параметра приведет к той же ошибке для такой же причина.

28
задан 5 revs, 2 users 100% 5 September 2013 в 01:28
поделиться

35 ответов

Избегайте использования TTTable с полями поиска, когда TQUERY будет делать Отказ

У меня был отчет, который был чрезвычайно медленным в большой базе данных. Он использовал TTable с кучей поиска полей. Я повесил сетевой монитор по моим приложению и обнаружил, что огромное количество данных течет по линиям, поскольку я проходил этот TTable с полями поиска. Изменение на TQuery резко уменьшило количество трафика и внесла огромную разницу в скорости.

Этот совет действительно просто учится думать в условиях клиента-сервера.

0
ответ дан 28 November 2019 в 02:12
поделиться

Возможно, используйте в своих интересах VCL FixPack Andreas Hausladen

, VCL Чинит Пакет, единица Дельфи, которая фиксирует VCL и ошибки RTL во времени выполнения путем исправления исходных функций. Если Вы хотите весь IDE, Чинят Пакет, фиксирует в Вашем приложении, эта единица - то, в чем Вы нуждаетесь. Добавление единицы к Вашему проекту (Дельфи и Разработчик C++) автоматически устанавливает патчи, которые avilable для Вашего Разработчика Дельфи/C++ версия.

0
ответ дан 2 revs 28 November 2019 в 02:12
поделиться

если вам нужно сравнить строки, используйте оптимизированные функции STRCOMP или TEXTCOMP. Для простого равенства используйте оптимизированные функции SAMESTR и SAMETEXT. Всегда выбирайте SAMESTR / STRCOMP, если знаете, что случай всегда будет одинаковым.

0
ответ дан 28 November 2019 в 02:12
поделиться

По возможности избегайте thread.synchronize. Это останавливает все и ждет потока VCL. Мы изменили большую часть наших синхронизаций, чтобы использовать thread.queue, где они могли бы выполняться асинхронно. Здесь также помогает использование анонимных методов.

0
ответ дан 28 November 2019 в 02:12
поделиться

Запустите SysInternals ProcessExplorer и FileMonitor и понаблюдайте за поведением вашего приложения с точки зрения ОС. Вы обнаружите такие сюрпризы, как неожиданная активность диска и реестра. Если вы думали, что сохраняете настройки в реестре или .ini файле за одну операцию, то, возможно, вы выполняете 100 записей. Вы можете обнаружить, что для записи в базу данных требуется 30 операций, а вы думали, что делаете 3. Некоторые из этих проблем можно решить с помощью таких вещей, как транзакции и буферизация. Но только после того, как вы сначала найдете проблемные места. У меня было такое "пробуждение", когда я отправил свое приложение на сертификацию U3 (накопители SanDisk U3 имеют свою собственную сертификацию). Я так и не заработал много денег на U3-версии своего приложения, но это занятие того стоило.

0
ответ дан 28 November 2019 в 02:12
поделиться
Другие вопросы по тегам:

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