У меня есть форма, которую я использую для отправки данных в mysql.
Перед отправкой формы я хочу проверить базу данных и посмотреть, есть ли в столбце «customerid» какие-либо поля, которые равны «userid», и если это так, чтобы не публиковать форму.
В основном, я пытаюсь ограничить мои пользователи от публикации более одного раза. Пользователи смогут войти в мою систему и сделать ОДИН пост. Они смогут удалять и изменять свой пост, но могут ограничиваться только одним сообщением.
Как бы я это сделал ??? Код пока:
<?php include '../login/dbc.php'; page_protect(); $userid = $_SESSION['user_id']; $sql="INSERT INTO content (customerid, weburl, title, description) VALUES ('$_POST[userid]','$_POST[webaddress]','$_POST[pagetitle]','$_POST[pagedescription]')"; if (!mysql_query($sql)) { die('Error: ' . mysql_error()); } echo "1 record added"; ?>
Вы должны использовать два запроса. Первый, SELECT customerid FROM content WHERE customerid = @ID
вернет строку, если уже существует запись с этим идентификатором. Оттуда оператор if либо сообщит вашему пользователю, что у них уже есть сообщение, либо продолжит ваш существующий код, чтобы вставить запись.
Сделайте инструкцию SELECT с параметрами, которые вы хотите проверить, – если они возвращают любые строки, то не вставляют.
Psuedocode –
$query = "SELECT customerid FROM content WHERE customerid = $_POST['userid']";
1) Вы можете использовать процедуры MySQL. Вы можете придумать процедуру как своего рода функцию MySQL, где вы можете писать правила так же, как и те, которые вы хотите, а затем просто называть их из ваших файлов PHP.
Вы можете сделать так:
<?php session_start(); // this is important if you are missing one include '../login/dbc.php'; page_protect(); $userid = mysql_real_escape_string($_SESSION['user_id']); $check_query = "select userid from content where userid = $userid"; $result = mysql_query($check_query) or die(mysql_error()); if (mysql_num_rows($result)) { exit('User is already their for a post !!'); // or redirect using header function. } $sql="INSERT INTO content (customerid, weburl, title, description) VALUES ('$_POST[userid]','$_POST[webaddress]','$_POST[pagetitle]','$_POST[pagedescription]')"; if (!mysql_query($sql)) { die('Error: ' . mysql_error()); } echo "1 record added"; ?>
Вы очень уязвимы для SQL-инъекций :
$sql="INSERT INTO content (customerid, ...) VALUES ('$_POST[customerid]', ...)"; ^
В этой статье объясняется SQL Injection и как избежать уязвимости в PHP.