Если мой пост пуст, как мне заблокировать обновление с моей базой данных?

У меня есть эта проблема с mysql на базах данных phpmyadmin, которые я хочу обновить свою базу данных, например, изменить имя пользователя, но с текущим кодом, который у меня есть, если я оставляю что-то пустое, он обновляет базу данных с пустым значением, я хотел изменить это что если сообщение пусто, оно не обновляет базу данных до пустого места

вот мой код:

<!doctype html>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "eerstedatabase";

//create connection
$connection = new mysqli($servername, $username, $password, $dbname);

if ($_POST) {

//check connection
if ($connection->connect_error) {
die("Connection failed: " . $connection->connect_error);
}
//if these posts are empty it updates them to empty in the database aswell
$sql = "UPDATE gebruikers SET Gebruikersnaam='" . $_POST['Gebruikersnaam'] . "',
Wachtwoord='" . $_POST['Wachtwoord'] . "',
Email='" . $_POST['Email'] . "'
WHERE ID='" . $_POST['ID'] . "' ";

if ($connection->query($sql) === TRUE) {
echo "Record updated successfully";

include 'Opdracht1.php';
} else {
echo "Error updating record: " . $conn->error;
}
}
else
{

?>
<html>
<head>
<meta charset="utf-8">
<title>Naamloos document</title>
</head>

<body>
<center>
<table>
<form name="update" action="OpdrachtDW6.php" method="POST">
<tr>
<td>ID</td>
<td><input type="text" name="ID" rquired /></td>
</tr>
<tr>
<td>Gebruikersnaam</td>
<td><input type="text" name="Gebruikersnaam" required /></td>
</tr>
<tr>
<td>Wachtwoord</td>
<td><input type="text" name="Wachtwoord" required /></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="Email" required /></td>
</tr>
<tr>
<td><input type="submit" value="Updaten" /></td>
</tr>
</td>
</form>
</center>
</body>
</html>

<?php
}
?>

-2

Решение

Вот (базовая) логика для проверки (не) пустых полей.

Sidenote: см. Комментарии в коде для обработки по желанию.

if( !empty($_POST['ID'])

&& !empty($_POST['Gebruikersnaam'])
&& !empty($_POST['Wachtwoord'])
&& !empty($_POST['Email'])

)

{

// Execute the query

}

else {

// kill the process or do something else

}

Если вы хотите выполнить ОБНОВЛЕНИЕ, только если электронная почта пуста, просто выполните:

if(!empty($_POST['Email'])) {

$sql = "UPDATE gebruikers ...

// Rest of your code

}

Обратитесь к следующему по логическим операторам PHP:

а также empty():


Примечания:

Ваш настоящий код открыт для SQL-инъекция. использование готовые заявления, или же PDO с готовые заявления.

Также о выполнении ОБНОВЛЕНИЯ и проверить, если это действительно был успешным, использовать mysqli_affected_rows():

как if ($connection->query($sql) === TRUE) может дать вам ложный положительный результат.

Вы также можете изменить столбцы, чтобы они не принимали значения NULL.

советоваться http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html

и сделать его / их как НЕ NULL.


На добавленной ноте это if ($_POST) { может быть изменен на if(isset($_POST['submit'])){ и добавление submit атрибут name к вашей кнопке отправки.

<input type="submit" name="submit" value="Updaten" />
1

Другие решения

Вы можете проверить, являются ли значения POST пустыми или нет:

if(empty($_POST['Email'])
// Do something

Существуют и другие варианты, такие как проверка длины строки, если имя слишком короткое, возможно, оно неприемлемо. Надеюсь, это поможет.

0

Вам необходимо проверить значение полей $ _POST на стороне сервера.

$errs = false;

if ($_POST['ID'] == "") {
$errs = true;
echo "ID Field Missing";
}
if ($_POST['Gebruikersnaam'] == "") {
$errs = true;
echo "Gebruikersnaam Field Missing";
}

/* And so on... */

if (!$errs) {
//check connection
if ($connection->connect_error) {
die("Connection failed: " . $connection->connect_error);
}

$sql = "UPDATE gebruikers SET Gebruikersnaam='" . $_POST['Gebruikersnaam'] . "',
Wachtwoord='" . $_POST['Wachtwoord'] . "',
Email='" . $_POST['Email'] . "'
WHERE ID='" . $_POST['ID'] . "' ";

if ($connection->query($sql) === TRUE) {
echo "Record updated successfully";

include 'Opdracht1.php';
} else {
echo "Error updating record: " . $conn->error;
}
}
0

Вы можете использовать эту логику

if(isset($_POST['Email'])){
//post email is not empty! and you can insert in database!
if ($connection->query($sql) === TRUE) {
echo "Record updated successfully";
include 'Opdracht1.php';
} else {
echo "Error updating record: " . $conn->error;
}
}
0

То, что я сделал раньше, это построил мой запрос на переменные, тогда, если переменная пуста, он пропустит этот бит запроса.

Например

if($_POST['fielda']) {
$fieldasql = "fielda = '".$_POST['fielda']."',";
} else {
$fieldasql = "";
}

if($_POST['fieldb']) {
$fieldbsql = "fieldb = '".$_POST['fieldb']."',";
} else {
$fieldbsql = "";
}

тогда ваш запрос будет:

$sql = "UPDATE gebruikers SET " . $fieldasql . " " . $fieldbsql;
0
По вопросам рекламы [email protected]