Почему мой запрос всегда возвращается к оператору else, даже если выбранные данные существуют? - PullRequest
0 голосов
/ 02 сентября 2018
$sql0unded = "SELECT * FROM tomb";
$query0unded = mysqli_query($dbconn,$sql0unded) or die ("Error: ".mysqli_error($dbconn).header("Refresh: 1,index.html"));
$row0unded = mysqli_num_rows($query0unded);
if($row0unded==1)
{ echo "yeayy";}
else
{header("Refresh:1;byebye.php");}

Это моя база данных

CREATE TABLE `tomb` (
  `id` int(100) NOT NULL,
  `ded` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `tomb` (`id`, `ded`) VALUES
(1, '2019-01-01'),
(2, '2019-01-02'),
(3, '2019-01-03'),
(4, '2019-01-04'),
(5, '2019-01-05'),
(6, '2019-01-06'),
, '2019-02-10');

ALTER TABLE `tomb`
  ADD PRIMARY KEY (`id`);

1 Ответ

0 голосов
/ 02 сентября 2018

mysqli_num_rows возвращает количество результатов в наборе результатов. При вставке нескольких строк при настройке таблицы и последующем выполнении запроса SQL, который возвращает все из этих строк, значение, возвращаемое при вызове mysqli_num_rows, будет больше 1. Соответственно, if условный тест на равенство 1 не пройден, и ветвь else взята.

Если это не предполагаемое поведение, вам необходимо:

  • изменить количество строк в таблице, чтобы была только одна строка; или
  • ограничить результаты в вашем запросе SELECT, чтобы гарантировать, что будет возвращена только одна строка (которую вы должны убедиться, что она принудительно применяется с использованием ограничений в базе данных); или
  • измените ваше условное выражение, чтобы искать значение, возвращаемое из числа вызываемых строк: >= 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...