$q = "INSERT INTO post(author, date_p, text_p) VALUES ('$author', '$datep', '$text_content')";
// ";" в одиночных запросах не ставится, а текстовые значения обрамляются кавычками
var_dump($q); //смотрим глазками, проверяем в консоли
$q = "INSERT INTO post(author, date_p, text_p) VALUES (?, ?, ?)";
//никогда не лезем в бд без подготовленных выражений!
$st = $pdo->prepare($q);
$sth->execute([$author, $datep, $text_content]);
SELECT DISTINCT tt.term_id
FROM wp_term_relationships AS tr
JOIN wp_term_taxonomy AS tt
ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN wp_terms AS t
ON tt.term_id = t.term_id
WHERE tr.object_id IN (
SELECT p.ID
FROM wp_posts AS p
JOIN wp_term_relationships AS tr
ON p.ID = tr.object_id
JOIN wp_term_taxonomy AS tt
ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN wp_terms AS t
ON tt.term_id = t.term_id
WHERE p.post_type = 'product'
AND p.post_status = 'publish'
AND tt.taxonomy = 'product_cat'
AND t.term_id = '2961'
)
AND tt.taxonomy LIKE 'pa_%';
SELECT m.*, u.login, i.img
FROM messages m
LEFT JOIN users u
ON m.to_user_id = u.id
LEFT JOIN image i
ON m.to_user_id = i.obj_id
WHERE m.date > :lastdate # надо выбирать все что позже уже полученных сообщений
AND image.obj_type = 'user'
AND m.from_user_id = :fid # айди "от юзера"
AND m.to_user_id = :tid #айди "к юзеру"
ORDER BY m.date # по возрастанию все старше последнего полученного
Как теперь массово выдать монеты этим пользователям через mysqli ?Ну так откуда нам знать? Что за таблица, что и как там храните? Вообще понятие "массово" вставить разнородные данные может подходить только к инсерту, апдейт в вашем случае делается единично каждой записи по условию совпадения поля. Внутри вашего форича после получения данных и делайте апдейт.
if(isset($submit))
А если я не нажал кнопку, просто нажал ентер в любом поле?$number = $_POST['phone_number'];
Такого поля в форме вообще нет.if(isset($name) && isset($email))
Ну допустим есть такие переменные, если в них не нэйм и емэйл то что делать? С мессажем та же фигня...Как мне сделать , чтобы бэк сам послал запрос в базу данных в это времяНикак, в это время будет каждый раз разное, и даже если использовать крон с какой-то долей разумности, отследить конкретно это время не получится, но это и не нужно...
в посте есть еще пункт статус, который будет меняться на false,Зачем? Разве не понятно что текущее время больше даты окончания?
Как такое лучше всего реализовать?Тупо проверяйте время окончания, и стройте логику вывода исходя из него.
login = filter_var(trim($_POST['login']), FILTER_SANITIZE_STRING);
$pass = filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING);
Во первых - зачем? Вы здесь не вносите никаких данных в систему, вы просто проверяете данные от пользователя с данными в бд. $pass = md5($pass."ghjsfkld2345");
используйте встроенные функции, password_hash и password_verify для работы с паролями.$result = $mysql->query("SELECT * FROM `users` WHERE `login` = '$login' AND `pass` = '$pass '");
Читаем про подготовленные выражения. Без них рано или поздно словите инъекцию. И начинать надо сейчас, на этапе обучения, и привыкнуть что по другому с переменными в запросах не работают. Так же, по уму подключение желательно вынести отдельно и добавить настройки. Рекомендую использовать PDO драйвер подключения к бд, он работает чуть быстрее и по функционалу побогаче.Warning: count(): Parameter must be an array or an object that implements Countable in D:\OSPanel\domains\Site1\auth.php on line 14по тому что читаем доку -
fetch_assoc — Fetch the next row of a result set as an associative arrayСоответственно, если запрос пустой, то фетчить нечего. Для проверки существует num_rows.
Выводит: "Такой пользователь не найден." Но в БД такой пользователь есть зарегестрированный, все данные авторизации правильные, а он выводит, что нету такого пользователя.Программу не на*бешь. Если говорит что нету, значит нету. А если не находит то что есть, значит вы не правильно ищете, что легко проверить. Вангую что запрос будет совершенно не таким как вы ожидаете:
...
$query = "SELECT * FROM `users` WHERE `login` = '$login' AND `pass` = '$pass'";
var_dump('check: ',$login, $pass,$query);
$result = $mysql->query($query);
...
To check which configuration files are processed by the server, just execute
$ /path_to_mysqld/mysqld --help --verbose
At the beginning of output you will find information about configuration files, e.g.
Если рассматривать аналогию с php, то там каждый запрос отправляется с новым подключением к базе.Это не так. Соединение открывается на все время выполнения скрипта, и закрывается автоматически по завершении работы всей цепочки вызовов. В процессе, одно соединение может выполнить стопицот запросов.
На сколько целесообразно "пытаться" держать соединение, или все же просто по аналогии с php?Вот тут точного ответа не дам, однако в пхп стараются избегать персистент соединения, так как пул соединений не бесконечный, и чем быстрее закроется соединение, тем быстрее можно освободить очередь для открытия нового, таким образом с небольшой задержкой можно обслужить очередь из сильно превышающей пул очереди. А с одним соединением начинается жонглирование запросами внутри 1 соединения, что приводит к блокировке кучи пользователей пользующихся 1 соединением с бд, вместо локально тормозящего 1 юзера в случае открытия/закрытия...
размещать сайт на хостинге в открытый доступ;А есть че размещать то? Хоть один сайт с полутора функциями? Что-то базовое, типа авторизация-регистрация-блог?
создавать формы для ввода данных , которые будут записывать введенные данные в файл либо отправлять по указанному e-mailОк, первый вопрос отпал...
В каких технологиях мне нужно разобраться? Надо ли учить PHP и MySQL?Любой современный язык под веб подойдет. И базовый SQL синтаксис для начала. Если работы будете "чисто для себя" делать, этого достаточно. Если для заказчика - либо учить что-то из фреймворков, либо брать готовые цмс и настраивать, что тоже вполне работа.