Подтвердить что ты не робот

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";
    }
}

Когда я делаю это, все возвращается, даже если оно должно быть возвращено.

4b9b3361

Ответ 1

Это должно сделать трюк: просто ограничьте результат до 1 строки; если строка возвращается, $lectureName присваивается, в противном случае она доступна.

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';
}

Ответ 2

Самый простой способ проверить, существует ли строка:

$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';
}

Не нужно связываться с массивами и именами полей.

Ответ 3

Используйте 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
}

Ответ 4

Просто небольшое обновление для сообщения и ответов: mysqli_query следует использовать, а не mysql_query.

mysqli_query

Ответ 5

$result = mysql_query("select if(exists (SELECT * FROM  preditors_assigned WHERE lecture_name='$lectureName'),'Assigned', 'Available')");

Ответ 6

Если вы хотите сравнить только одну строку с $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";
  }
}

Ответ 7

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';
}