Ошибка:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
почти всегда потому, что вы пытались выполнить запрос, и это не удалось по какой-то причине, но вы продолжали слепо в любом случае.
При неудаче mysqli_query
will return false, а не mysqli_result
и, если затем попытаться использовать это булево false
значения в чем-то вроде mysqli_num_rows
, это точно ошибки вы увидите.
Как первый пункт, вы должны всегда проверить возвращаемое значение функций, которые могут потерпеть неудачу, это просто хорошая практика. Продолжать слепо и надеяться на лучшее не на самом деле способ создать надежный код.
Сказав это, вы затем перейти к почему запрос не удалось. Большая часть проблем SQL становится очевидной, если вы только распечатываете запрос, прежде чем пытаться его выполнить. Похоже, вы в конечном итоге сделать это, так как один из ваших комментариев говорится, что ваш запрос:
SELECT * FROM Workhours WHERE AFNumber='AF1475' AND (NOT LIKE '')
Это не допустимый оператор SQL, поэтому проблема.Теперь, несмотря на то, что, как представляется, используя другое имя таблицы (более ранние редактирования Вашего вопроса сделал имеют соответствующее имя таблицы), это близко соответствует вашей $sql3
переменной :
$sql3 = "SELECT * FROM Work WHERE ID='".$_GET["id"]."' AND (".$row['Field']." NOT LIKE '".$_POST[$tempname]."')";
Следовательно что ни $row['Field']
, ни $_POST[$tempname]
фактически не установлены ни на что.
Это, где вам нужно сосредоточить свои усилия, чтобы выяснить, почему именно они не множество.
Для начала кажется нецелесообразным использовать $row[anything]
после цикл обработки строк завершен. Вполне возможно, что вам нужно переместить этот код в в пределах цикла, чтобы заставить его работать, но без дополнительной информации и контекста это действительно просто гипотеза (хотя и образованная гипотеза).
Если это не право запроса (я только заметил, что это также использует ID
вместо AFNumber
), то проблема заключается в другом, кроме кода вы показали. Однако метод, используемый для поиска проблемы, останется прежним: найдите проблемный запрос, распечатайте его перед исполнением, а затем выясните, почему он искажен.
Mmmm ... Bobby Tables https://xkcd.com/327/ – Ben
ВЫ ДОЛЖНЫ начать использовать подготовленные операторы НЕМЕДЛЕННО. Это не шутка. –
Вопрос спрашивает о 'if (mysqli_num_rows ($ result3)' - но этот код не отображается в источнике? @mikeb, вам может потребоваться изменить этот вопрос, чтобы исправить это. – unrivaledcreations