Это, наверное, легко сделать, но я любитель, и все просто не работает для меня.
Я просто хочу проверить и посмотреть, существует ли строка, где показано выражение $ lectureName. Если строка существует с именем $ lectureName где-то в ней, я хочу, чтобы функция возвращала «назначен», если нет, то она должна возвращать «доступную». Вот что у меня есть. Я уверен, что это беспорядок. Пожалуйста помоги.
function checkLectureStatus($lectureName) { $con = connectvar(); mysql_select_db("mydatabase", $con); $result = mysql_query("SELECT * FROM preditors_assigned WHERE lecture_name='$lectureName'"); while($row = mysql_fetch_array($result)); { if (!$row[$lectureName] == $lectureName) { mysql_close($con); return "Available"; } else { mysql_close($con); return "Assigned"; } }
Когда я делаю это, все возвращается, даже когда оно должно возвращаться.
Это должно сделать трюк: просто ограничьте результат до 1 строки; если строка возвращает значение $lectureName
Assigned , в противном случае оно доступно .
function checkLectureStatus($lectureName) { $con = connectvar(); mysql_select_db("mydatabase", $con); $result = mysql_query( "SELECT * FROM preditors_assigned WHERE lecture_name='$lectureName' LIMIT 1"); if(mysql_fetch_array($result) !== false) return 'Assigned'; return 'Available'; }
Самый простой способ проверить, существует ли строка:
$lectureName = mysql_real_escape_string($lectureName); // SECURITY! $result = mysql_query("SELECT 1 FROM preditors_assigned WHERE lecture_name='$lectureName' LIMIT 1"); if (mysql_fetch_row($result)) { return 'Assigned'; } else { return 'Available'; }
Не нужно связываться с массивами и именами полей.
Используйте mysql_num_rows (), чтобы проверить, доступны ли строки или нет.
$result = mysql_query("SELECT * FROM preditors_assigned WHERE lecture_name='$lectureName' LIMIT 1"); $num_rows = mysql_num_rows($result); if ($num_rows > 0) { // do something } else { // do something else }
Просто небольшое обновление для сообщения и ответов: mysqli_query следует использовать, а не mysql_query.
mysqli_query
$result = mysql_query("select if(exists (SELECT * FROM preditors_assigned WHERE lecture_name='$lectureName'),'Assigned', 'Available')");
Если вы просто хотите сравнить только одну строку с $ lactureName, используйте следующую
function checkLectureStatus($lectureName) { $con = connectvar(); mysql_select_db("mydatabase", $con); $result = mysql_query("SELECT * FROM preditors_assigned WHERE lecture_name='$lectureName'"); if(mysql_num_rows($result) > 0) { mysql_close($con); return "Assigned"; } else { mysql_close($con); return "Available"; } }
function checkLectureStatus($lectureName) { global $con; $lectureName = mysql_real_escape_string($lectureName); $sql = "SELECT 1 FROM preditors_assigned WHERE lecture_name='$lectureName'"; $result = mysql_query($sql) or trigger_error(mysql_error()." ".$sql); if (mysql_fetch_row($result)) { return 'Assigned'; } return 'Available'; }
однако для доступа к базе данных вам необходимо использовать некоторую библиотеку абстракции.
код станет
function checkLectureStatus($lectureName) { $res = db::getOne("SELECT 1 FROM preditors_assigned WHERE lecture_name=?",$lectureName); if($res) { return 'Assigned'; } return 'Available'; }