У меня есть эта проблема с 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
}
?>
Вот (базовая) логика для проверки (не) пустых полей.
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" />
Вы можете проверить, являются ли значения POST пустыми или нет:
if(empty($_POST['Email'])
// Do something
Существуют и другие варианты, такие как проверка длины строки, если имя слишком короткое, возможно, оно неприемлемо. Надеюсь, это поможет.
Вам необходимо проверить значение полей $ _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;
}
}
Вы можете использовать эту логику
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;
}
}
То, что я сделал раньше, это построил мой запрос на переменные, тогда, если переменная пуста, он пропустит этот бит запроса.
Например
if($_POST['fielda']) {
$fieldasql = "fielda = '".$_POST['fielda']."',";
} else {
$fieldasql = "";
}
if($_POST['fieldb']) {
$fieldbsql = "fieldb = '".$_POST['fieldb']."',";
} else {
$fieldbsql = "";
}
тогда ваш запрос будет:
$sql = "UPDATE gebruikers SET " . $fieldasql . " " . $fieldbsql;