Из таблицы MySQL, называемой «представлением», содержащей поля «loginid, uploadid, title, url, datesubmitted, displayurl», я хотел бы напечатать таблицу HTML, содержащую все «title» и соответствующие «dateubmitted», где «loginid» равно « $ профиль «. Код, который я пытаюсь использовать, приведен ниже. Он не работает. Любые идеи, почему он не работает?
Заранее спасибо,
Джон
$profile = $_GET['profile']; $sqlStr = "SELECT loginid, submissionid, title, url, datesubmitted, displayurl FROM submission WHERE loginid = $profile ORDER BY datesubmitted DESC"; $result = mysql_query($sqlStr); $arr = array(); echo "<table class=\"samplesrec\">"; while ($row = mysql_fetch_array($result)) { echo '<tr>'; echo '<td class="sitename1"><a href="http://www.'.$row["url"].'">'.$row["title"].'</a></td>'; echo '</tr>'; echo '<tr>'; echo '<td class="sitename2">'.$row["datesubmitted"].'</a></td>'; echo '</tr>'; } echo "</table>";
Вероятно, ваш запрос не работает.
Попробуйте повторить возврат из mysql_error (); после проверки запроса, чтобы узнать, что может быть проблемой.
Вы также должны защитить свой вход от инъекции. Если loginID является именем пользователя, вам нужно окружить строку в запросе mySQL кавычками – если loginID является именем пользователя. Если это целое число, вы можете быть в порядке.
Есть более надежные способы сделать это, но просто:
$profile = mysql_real_escape_string($_GET['profile']); $sqlStr = "SELECT loginid, submissionid, title, url, datesubmitted, displayurl FROM submission WHERE loginid = '$profile' ORDER BY datesubmitted DESC"; $result = mysql_query($sqlStr); if($result) { // Handle output } else { echo 'query failed'; // don't leave this here in production! echo mysql_error(); }
Одна проблема, которую я вижу, заключается в том, что вы не проверяете возвращаемое значение mysql_query()
mysql_query()
возвращает false
если ему не удается выполнить запрос. Поэтому вам нужно сделать чек, например:
$result = mysql_query($sqlStr); if(! $result) { //....error occured...prepare $message die($message); }
ваш вопрос касается отладки , самого важного искусства программирования. Никто не может найти ошибку для вас, вы должны сделать это сами. С помощью маленьких трюков.
change $profile = $_GET['profile'];
to $profile = intval($_GET['profile'];)
change $result = mysql_query($sqlStr);
в
$result = mysql_query($sqlStr) or trigger_error(mysql_error()." in ".$sqlStr);
и после двух строк вверху вашего кода, запустите его снова и посмотрите, что он скажет. если все равно ничего, у вас нет соответствующих записей в таблице.
ini_set('display_errors',1); error_reporting(E_ALL);