Есть такой код:
function getUser($full_name, $social_id) {
global $mysqli;
connectDB();
$result = $mysqli->query("SELECT * FROM `users` WHERE `full_name` = '$full_name' AND `social_id` = '$social_id'");
if (mysqli_num_rows($result) == 0) {
if (setUser($full_name, $social_id)) {
getUser($full_name, $social_id);
}
}
closeDB();
return $result->fetch_assoc();
}
function setUser($full_name, $social_id) {
global $mysqli;
connectDB();
$mysqli->query("INSERT INTO `users` SET `full_name` = '$full_name', `social_id` = '$social_id'");
$id = mysqli_insert_id($mysqli);
closeDB();
return $id;
}
Суть в следящем: Вызываться функция getUser
, если такой user
уже есть, то вернуть о нем информацию. Если нету, то задать его, и вернуть информацию визовом функции getUser
. Почему-то идет зацикливание. В базе каждую секунду добавляться одинаковый user
Попробуйте возвращать значение getUser, завершая тем самым выполнение функции
if (setUser($full_name, $social_id)) {
return(getUser($full_name, $social_id));
}
У меня правда и без этого заработало, но я не знаю, как у вас реализованы connectDB и closeDB. При рекурсивном вызове closeDB не срабатывает, а после вызова срабатывает, когда соединение уже и так закрыто.
Попробуйте
$id = $mysqli->insert_id;
вместо
$id = mysqli_insert_id($mysqli);
Замените
if (mysqli_num_rows($result) == 0) {
if (setUser($full_name, $social_id)) {
getUser($full_name, $social_id);
}
}
на
if($result->num_rows == 0){ // проверяем количество записей в результате
if (setUser($full_name, $social_id)) {
return getUser($full_name, $social_id); // Прерываем дальнейшее выполнение
}
}
Функции правильные, проблема в максимальном значении типа int в БД. Заменил на bigint. Все работает
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, задание: Написать функцию, которая выводит список файлов в заданной директории, которые содержат искомое словоДиректория...
Есть база EAV с таблицами: product - продукты (ключ: product_id); params - параметры продуктов (ключи: product_id, param_id); value - значения параметров продуктов (ключ:...
Этот код почему-то удаляет все данные из файла и записывает новые при каждом вызове saveRow()