Как мне найти / найти и заменить в стандартной строке?

Параметр, являющийся логическим, является $res. mysql_query возвращает FALSE при ошибке:

Для SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих набор результатов, mysql_query() возвращает ресурс с успехом или FALSE при ошибке.

blockquote>

из http://php.net/manual/en/function.mysql-query.php .

Таким образом, проблема что ваш запрос SQL недействителен, возможно, потому что partners_program не существует или потому, что одно из полей не существует.

Хорошим началом в отладке проблемы является удаление @ спереди из mysql_query. @ Подавляет все ошибки и, как правило, неодобрительно. Если ваши настройки PHP правильно настроены для отладки, вы должны затем получить описательное сообщение об ошибке. Вы также можете для целей отладки использовать mysql_error() сразу после mysql_query для более подробной информации.

Кроме того, функции mysql_* устарели долгое время, поэтому, если это возможно, вы должны проверьте библиотеки pdo или mysqli.

89
задан Lightness Races in Orbit 20 December 2011 в 11:34
поделиться

3 ответа

Почему бы не реализовать собственную замену?

void myReplace(std::string& str,
               const std::string& oldStr,
               const std::string& newStr)
{
  std::string::size_type pos = 0u;
  while((pos = str.find(oldStr, pos)) != std::string::npos){
     str.replace(pos, oldStr.length(), newStr);
     pos += newStr.length();
  }
}
71
ответ дан 24 November 2019 в 06:40
поделиться

Самый простой способ (предложить что-то близкое к тому, что вы написали) - использовать Boost.Regex , в частности regex_replace .

std :: string имеет встроенные методы find () и replace (), но работать с ними более громоздко, поскольку они требуют работы с индексами и длинами строк.

3
ответ дан 24 November 2019 в 06:40
поделиться

Я считаю, что это сработает. Он принимает в качестве параметра const char *.

//params find and replace cannot be NULL
void FindAndReplace( std::string& source, const char* find, const char* replace )
{
   //ASSERT(find != NULL);
   //ASSERT(replace != NULL);
   size_t findLen = strlen(find);
   size_t replaceLen = strlen(replace);
   size_t pos = 0;

   //search for the next occurrence of find within source
   while ((pos = source.find(find, pos)) != std::string::npos)
   {
      //replace the found string with the replacement
      source.replace( pos, findLen, replace );

      //the next line keeps you from searching your replace string, 
      //so your could replace "hello" with "hello world" 
      //and not have it blow chunks.
      pos += replaceLen; 
   }
}
3
ответ дан 24 November 2019 в 06:40
поделиться
Другие вопросы по тегам:

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