Konstantin18ko
@Konstantin18ko
Стоматолог

Почему не возвращает строку, хотя запись в БД есть?

Есть PHP код.
$link = mysqli_connect($HOST, $USER, $PASS)
    or die('Не удалось соединиться: ' . mysqli_error($link));
mysqli_select_db($link, $IN);

$fio_patient_array = explode(" ", $fio_patient);
$fio_doctor_array = explode(" ", $fio_doctor);

$query = "SELECT id_patient FROM patient WHERE surname='$fio_patient_array[0]' AND name='$fio_patient_array[1]' AND midname='$fio_patient_array[2]' AND birthday='$birthday'";
$result = mysqli_query($link, $query) or trigger_error(mysqli_error($link)." in ". $query);
if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo $row['id_patient'];
    }
} else {
    echo "0 results";
}

Сама строка в сгенерированом виде выглядит так:
SELECT id_patient FROM patient WHERE surname='Саблина' AND name='Оксана' AND midname='Сергеевна' AND birthday='1998-08-26'

Если проверить данный запрос в БД вернет запись 1.
2ddcee0adb01f0c819803088581ce714.jpg
При выполнении кода вернет: 0 results
В чем проблема?
Кстати, команду INSERT INTO... выполняет.
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
Konstantin18ko
@Konstantin18ko Автор вопроса
Стоматолог
Решил проблему: mysqli_set_charset($link, "utf8");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Пара замечаний.
Для небуферизированных запросов mysqli_num_rows() возвращает точные данные только после кэширования результата через mysqli_store_result() или выборки всех строк.
Откажитесь от прямой подстановки переменных в текст запроса. Вместо этого используйте подготовленные запросы (mysqli_prepare()) с параметрами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы