Пожалуйста, помогите мне в решении указанной проблемы:
Раздел кода:
$result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate, UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where id='$_GET[id];'"); // the above query is not working if ( mysql_num_rows($result) == 0 ) { print "<p>No events right now.</p>\n"; } else { $lasteventmonth = ''; while ($row = mysql_fetch_array($result)) { $eventmonth=""; $eventmonth = date("FY",$row['eventdate']); if ($lasteventmonth != $eventmonth) { print "<p style='font-size: 18px;'><b>$eventmonth</b></p>"; } $lasteventmonth = $eventmonth; showEvent($row); } } ?> ........................ ........................//other codes
когда код оценивается следующим образом:
Предупреждение: mysql_num_rows (): предоставленный аргумент не является допустимым ресурсом результата MySQL в C: \ Users \ Fagun \ Desktop \ UsbWebserver \ Root \ mapcal \ mapcal.php в строке 122 Нет событий прямо сейчас. ++++++++
После вашего вызова в mysql_query
используйте это:
if (! $result) { echo mysql_errno() . ": " . mysql_error(). "\n"; }
это точно скажет вам, почему MySQL не будет запускать ваш запрос.
is ID a String или int? В любом случае, я думаю, вы не должны включать конечную точку с запятой?
Попробуйте изменить его следующим образом: $ result = mysql_query ("SELECT *, UNIX_TIMESTAMP (eventdate) AS eventdate,
UNIX_TIMESTAMP (viadate) AS throughdate FROM events ORDER BY eventdate, где id = '$ _ GET [id]' ");
Я предполагаю, что это проблема с тем, как вы используете построение запроса и конкатенацию идентификатора. Попробуйте это вместо этого (обратите внимание, как ID конкатенирован):
$query = "SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate, UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where id='".$_GET[id]."'"; $result = mysql_query($query) or die(mysql_error());
Вам не нужно разбивать его на 2 части, но – это должно быть легче читать и понимать. Вы даже можете выполнить эхо-запрос перед запуском, чтобы увидеть, какой запрос действительно создается, и попробовать его вручную в своей базе данных.
Часть или die(mysql_error())
предоставит вам информацию о том, что является проблемой (если это не проблема с идентификатором).
Правильно укажите значения:
$_GET[id]
должен быть $_GET['id']
Попробуйте ниже:
$result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate, UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where id='".$_GET['id']."');
Попробуй это:
"SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate, UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where id='".$_GET['id'].";'"
Я предполагаю, что id
не поступает с пользовательского ввода. Если это так, это уязвимо для атаки SQL-инъекций.
пытаться:
$result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate, UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where id= '" . intval($_GET['id']) . "'"); if($result) { //Do code }
используйте intval (), чтобы убедиться, что $_GET['id']
является целым числом.
используйте оператор if, чтобы убедиться, что запрос выполнен правильно.
Попробуй это
$result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate, UNIX_TIMESTAMP(throughdate) AS throughdate FROM events where id='".$_GET['id']."' ORDER BY eventdate");