Проблема с аргументом mysql_fetch_array () не является допустимым ресурсом результата MySQL '

У меня есть база данных с таблицей, которая включает, среди прочего, один столбец дат (столбец под названием «дата») в формате Ymd.

Я хочу извлечь все строки данных, которые были зарегистрированы в течение текущего месяца, поэтому я использую следующий запрос:

$year_month = date("Ym"); $query = "SELECT date FROM tracker WHERE date LIKE '$year_month%'"; 

Когда я выполняю запрос и пытаюсь выводить его визуально, я получаю сообщение об ошибке «Предупреждение: mysql_fetch_array (): предоставленный аргумент не является допустимым ресурсом результата MySQL в строке 64».

Строка 64 – это начало следующего цикла:

 while($row = mysql_fetch_array($result, MYSQL_ASSOC) { echo "Name :{$row['date']} <br>"; } 

Я просмотрел google и тоже посмотрел сюда, но я не могу понять эту, казалось бы, простую проблему. Насколько я могу судить, фактический запрос выполняется просто отлично.

Есть идеи?

** Дополнительно – вызов MySQL Query Ниже **

 $result = mysqli_query($conn, $query); 

$ conn относится к следующей строке:

 $conn = @mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die ('Error connecting to MySQL'); 

На меня выпрыгивают две вещи:

  1. Вы уверены, что это вопрос с этим результатом? Запросы, такие как insert и delete , не имеют результатов. Они возвращают логическое значение, указывающее на успех.

  2. Вы проверяете, удалось ли выполнить запрос? После строки, где вы вызываете mysql_query , убедитесь, что вы проверили результат. Если это неверно, вы можете вызвать mysql_get_error чтобы узнать, что пошло не так.

EDIT: Хорошо, ваша настоящая проблема заключается в том, что вы смешиваете команды mysql_* и mysqli_* . Вы должны использовать тот или иной.

Что-то вроде этого должно работать хорошо …

 if(!$result) throw new Exception("MySQL Error: ".mysql_error()." (#".mysql_errorno().")"); if(mysql_num_rows($result) <= 0) echo "No results found."; else while($row = mysql_fetch_array($result, MYSQL_ASSOC)) echo "Name :{$row['date']} <br>"; 

Если вы не понимаете ошибки, которые вы получаете от mysql_error() и mysql_errorno() , затем mysql_errorno() вывод, и мы сможем помочь с ним.

 $query = "SELECT date FROM tracker WHERE date LIKE '$year_month%'"; 

должно быть

 $query = "SELECT `date` FROM tracker WHERE `date` LIKE '$year_month%'"; 

date – зарезервированное слово в sql.

ищите больше примеров здесь

Что такое тип данных для поля даты, если это тип даты, тогда вы должны попробовать следующее:

 $query = "SELECT date FROM tracker WHERE year(date)='".date("Y")." and month(date) = '".date("m")."'"; $year_month = date("Ym"); $result = mysql_query($query); while($row = mysql_fetch_array($result, MYSQL_ASSOC) { echo "Name :{$row['date']} <br>"; }