Все работает в 99% нормально, но иногда проскакивает выдача другой строки, не с таким полем, по которому ищем.Это просто значит 99% проблема в коде. Логируйте в файл запрос, параметры и результат выполнения, скорее всего логика работает не так как вы задумали. Как только словите ошибку - смотрите свой лог, наверняка запрос будет отличаться от ожидаемого.
expects parameter 1 to be mysqli_result, bool givenожидаем результат запроса, но получаем булеан. Почему? 99% кривой запрос, но этого мы не узнаем, так как кода нету. Для нормального отображения ошибок запросов, нужно добавить после соединения
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Здесь уже проблема с хедеромДа нет, с хедером все ок. Проблема что тут его уже нельзя отправить, так как вы что-то вывели в браузер (скорее всего как раз ошибку из п.1). Что легко гуглится (Результатов: примерно 6 170 000).
селект *
фром тбл
вэа юзер_ид ин(
селект юзер_ид
фром тбл
вэа валуе_ид = 23
груп бай валуе_ид
хэвинг каунт(*) = 2
) т1
энд валуе_ид = 22
// Mysql connect
$opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
$conn = new PDO(
"mysql:host=".$settings['db']['host'].";dbname=".$settings['db']['name'].";port=".$settings['db']['port'].";",
$settings['db']['user'],
$settings['db']['password'],
$opt
);
...
После этого смотреть что вылазит в ошибках. function mysqli_json_insert($mysqli, $tablename, $json){
$arr = json_decode($json, true);
$fields = '`' . implode('`, `', array_keys($arr)) . '`' ;
$values = implode(',', array_fill(0, count($arr)));
$stmt = $mysqli->prepare("insert into `$tablename` ($fields) values ($values)");
$types = str_repeat('s', count($arr));
$stmt->bind_param($types, ...$arr);
$stmt->execute();
}
Писал с руки, так что могут быть очепятки... При добавлении новой записи в бд хочу проверять, чтобы не было похожей записи."Похожий" - человеческое малоформальное определение. Все сильнее убеждаюсь что средняя особь кожаных мешков не шарит за формализацию. Распишите какие критерии "похожести" для вас являются приемлемыми. Можно на примере 2 текстов.
есть поле datetime, и поле type в котором есть значения 1 или 2.И все? Больше полей нет?
но из-за большого количества данных идёт сильная нагрузка.Большого это сколько? Сколько получается в итоговой выборке, сколько всего в таблице записей?
Как такое можно оптизировать.Оптимизация возможна когда понятна задача и есть нормальные исходные данные, например explain бы не помешал, и вышеперечисленные отсутствующие данные, а тыканье пальцем в лужу ощутимого эффекта не даст.
$number = filter_var(trim($_POST['cardNumber']),FILTER_SANITIZE_STRING);
Не надо извращаться с непонятными (вам) функциями. filter_var тут не нужен.Апдейт юзерс
сет текст = "какой-то текст пришел из формы"
вэа айди = юзерайди_полученный_допустим_из_сессии
The enctype attribute can be used only if method="post".