Возможный дубликат:
mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean задан в select
Ошибка…
Предупреждение: mysql_fetch_assoc () ожидает, что параметр 1 будет ресурсом, boolean указан в /home/andar/public_html/sistema/admin/cron.php в строке 19
$hoje = strtotime(date("dmY")); $db = new DBConfig(); $db -> config(); $db->conn(); $query = mysql_query("SELECT * FROM products WHERE auto_pub = ".$hoje) or die(mysql_error()); while($res = mysql_fetch_assoc($query)) { $query = mysql_query("UPDATE products SET publicado = '0' WHERE auto_pub = ".$hoje) or die(mysql_error()); } $db->close();
$query используется до момента while и внутри while … Измените имя переменной на $query2 , например:
$hoje = strtotime(date("dmY")); $db = new DBConfig(); $db -> config(); $db->conn(); $query = mysql_query("SELECT * FROM products WHERE auto_pub = ".$hoje) or die(mysql_error()); while($res = mysql_fetch_assoc($query)) { $query2 = mysql_query("UPDATE products SET publicado = '0' WHERE auto_pub = ".$hoje) or die(mysql_error()); } $db->close();
Надеюсь, поможет.
Чтобы гарантировать, что пока выполняется только выполнение запроса, вы можете написать:
if ($query) while($res = mysql_fetch_assoc($query)) { mysql_query("UPDATE products SET publicado = '0' WHERE auto_pub = ".$hoje) or die(mysql_error()); }
Обратите внимание на отсутствие присваивания $query= в цикле. Для UPDATE вы не хотите читать никаких результатов. И вы все равно проверяете outcoume с or die .
Вероятно, ваш mysql_query вернулся из-за ошибки синтаксиса (ваша дата не цитируется).