Как прекратить отправку сообщений в mysql, если база данных содержит определенный идентификатор?

У меня есть форма, которую я использую для отправки данных в 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"; ?> 

Solutions Collecting From Web of "Как прекратить отправку сообщений в mysql, если база данных содержит определенный идентификатор?"

Вы должны использовать два запроса. Первый, 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.