Я не могу обновить таблицу mysql в php.
У меня есть 3 файла: в первом файле перечислены результаты таблицы с кнопкой «обновить», связанной с полем электронной почты в таблице. Первый файл, кажется, может нормально передать поле электронной почты во второй файл.
Второй файл включает в себя форму, которая содержит все поля данных и кнопку отправки.
Третий файл включает в себя запрос на обновление базы данных. Запрос выполняется успешно, но количество затронутых строк всегда равно 0. Я подозреваю, что адрес электронной почты не передается, но возможно, что другие переменные также не передаются. Любые рекомендации?
Первый файл — я только в том числе PHP — выберите строку для обновления из таблицы:
require 'project_db.php';
mysql_connect("$servername", "$username", "$password")or die("cannot connect");
mysql_select_db("$database")or die("cannot select DB");
//execute the SQL query and return records
if (!$result = mysql_query("SELECT * FROM $table"))
echo 'mysql error: ' .mysql_error();
//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
?>
<tr>
<td><?php echo $row['Name']; ?></td>
<td><?php echo $row['Email']; ?></td>
<td><?php echo $row['Website']; ?></td>
<td><?php echo $row['Gender']; ?></td>
<td class="record-edit">
<form action='edit_form.php?Email="<?php echo $row['Email']; ?>"' method="post">
<input type="hidden" name="Email" value="<?php echo $row['Email']; ?>">
<input type="submit" name="submit" value="Update">
</form>
</td>
<td class="record-delete">
<form action='project_selectdelete2b.php?Email="<?php echo $row['Email']; ?>"' method="post">
<input type="hidden" name="Email" value="<?php echo $row['Email']; ?>">
<input type="submit" name="submit" value="Delete">
</form>
</td>
</tr>
<?php }
?>
Второй файл — это форма php:
$order = "SELECT * FROM $table WHERE Email='$Email'";
$result = mysqli_query($order);
$row = mysqli_fetch_array($result);
?>
<form id ="edit_my_beach_form" enctype="multipart/form-data" action='edit_data.php?Email="<?php echo $row['Email']; ?>"' method="post">
<fieldset>
<input type="hidden" name="Email" value="<?php echo "$row[Email]"?>" />
<tr>
<td>Name: </td>
<td><input type="text" name="Name" value="<?php echo"$row[Name]"?>"></td>
</tr>
<tr>
<td>Website: </td>
<td><input type="text" name="Website" value="<?php echo"$row[Website]"?>"></td>
</tr>
<tr>
<td>Gender: </td>
<td><input type="text" name="Gender" value="<?php echo"$row[Gender]"?>"></td>
</tr>
...
...
...
<tr>
<td>Comments: </td>
<td><input type="text" name="FBComment" value="<?php echo"$row[FBComment]"?>"></td>
</tr>
</fieldset>
<tr>
<td><input type="submit" name="save" value="submit" /></td>
</tr>
</form>
</table>
И третий файл — это запрос на обновление:
$Email = $_REQUEST["Email"];
$Name = $_POST['Name'];
$Website = $_POST['Website'];
$Gender = $_POST['Gender'];
$FBCountry = $_POST['FBCountry'];
$FBCity = $_POST['FBCity'];
$FBFeature = $_POST['FBFeature'];
$FBClean = $_POST['FBClean'];
$FBCrowd = $_POST['FBCrowd'];
$FBPeople = $_POST['FBPeople'];
$FBWildlife = $_POST['FBWildlife'];
$FBBackdrop = $_POST['FBBackdrop'];
$FBWaves = $_POST['FBWaves'];
$FBSeabed = $_POST['FBSeabed'];
$FBTemp = $_POST['FBTemp'];
$FBAmenities = $_POST['FBAmenities'];
$FBComment = $_POST['FBComment'];//Define the query
$query = "UPDATE $table
SET Name = '" . $Name . "', Website = '" . $Website . "', Gender = '" . $Gender . "',
FBCountry = '" . $FBCountry . "', FBCity = '" . $FBCity . "', FBFeature = '" . $FBFeature . "',
FBClean = '" . $FBClean . "', FBCrowd = '" . $FBCrowd . "', FBPeople = '" . $FBPeople . "',
FBWildlife = '" . $FBWildlife . "', FBBackdrop = '" . $FBBackdrop . "', FBWaves = '" . $FBWaves . "',
FBSeabed = '" . $FBSeabed . "', FBTemp = '" . $FBTemp . "', FBAmenities = '" . $FBAmenities . "',
FBComment = '" . $FBComment . "'
WHERE Email = '". $_POST['Email'] ."';";//sends the query to delete the entry
$execute = mysqli_query ($connect,$query);
$rows = mysqli_affected_rows ($connect);if ($execute) {
echo "Successful";
echo $rows;
echo $Email;
}
else {
echo 'OOPS, we have a problem!! Check edit_data';
echo $rows;
}
?>
Проблема в том, что вы передаете письмо через URL, который является методом GET. Так,
$query = "UPDATE $table
SET Name = '" . $Name . "', ...
...
WHERE Email = '". $_GET['Email'] ."';";
и в вашем первом файле вы используете mysql
двигатель
mysql_connect("$servername", "$username", "$password")or die("cannot connect");
mysql_select_db("$database")or die("cannot select DB");
п в третьем файле, который вы используете mysqli
двигатель
$execute = mysqli_query ($connect,$query);
$rows = mysqli_affected_rows ($connect);
Оба должны быть одинаковыми. Более того, я предлагаю вам использовать объектно-ориентированный стиль для лучшей целостности кода.
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
Других решений пока нет …