MySql php: проверьте, существует ли строка

Это, наверное, легко сделать, но я любитель, и все просто не работает для меня.

Я просто хочу проверить и посмотреть, существует ли строка, где показано выражение $ 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'; }