Я пытаюсь вызвать и обновить строку таблицы в базе данных с использованием определенных критериев. В настоящее время у меня есть таблица, загружающая данные в текстовые поля и автоматически назначающая НАЗВАНИЯ всех текстовых полей, чтобы я мог использовать их позже для обновления.
Код для отображения
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
mysqli_set_charset($conn,"utf8");
$check=$_POST["scenario1"];
$qwert="SELECT * FROM izprashtane WHERE Сценарий='$check'";
$query=mysqli_query($conn,$qwert);
$sql = "SHOW COLUMNS FROM izprashtane";
$result = mysqli_query($conn,$sql);
echo "<table width=650 border=1>\n";
$counter=0;
while ($get_info = mysqli_fetch_row($query)){
echo "<tr>\n";
while($row = mysqli_fetch_array($result)){
echo "<td>" . $row['Field'] . "</td>";
}
echo "</tr>\n";
echo "<tr>\n";
$counter=0;
foreach ($get_info as $field){
$counter += 1;
echo "\t<td><input type='text' name='$counter' value='$field'></td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
$conn->close();
?>
<html>
<body>
<form action="datacizprashtane.php" method="POST">
<input type="submit" value="Промяна" >
</form>
</body>
</html>
Это загружает строку таблицы в таблицу с редактируемыми текстовыми полями и присваивает имена от 0 до того, что мне нужно. Затем я получил код для обновления таблицы. Это просто экспериментально, поэтому у меня есть только 2 текстовых поля, и я добавлю остальные, как только это получится.
Код для обновления
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE izprashtane SET НаселеноМясто='$_POST[2]',Тримесичие='$_POST[3]' WHERE Сценарий='$_POST[6]'";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
$conn->close();
На данный момент это дает мне:
Ошибка обновления записи: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с ' аселеноМясто =' ', Тримес' в строке 1.
Я пытался использовать '".$_POST[3]."'
Но тогда это даже не дает мне ошибку. Любые идеи о том, что я делаю неправильно?
Я думаю, ваша проблема в том, что поля <input...>
в вашем HTML не находятся в <form....
>.
Если поля не помещаются внутри <form>
они не отправляются при нажатии кнопки отправки. На самом деле они даже не внутри страницы <body>
В настоящее время только кнопка отправки находится внутри вашего <form>
, поэтому подача выполняется, но данные не передаются, и вы не проверяете, действительно ли они существуют, прежде чем использовать их.
$_POST
. Он должен использовать кавычки, такие как $_POST['2']
чтобы получить к ним доступ. Я думаю, что у него были проблемы с двойными кавычками, поэтому он решил опубликовать его без кавычек.
вы должны поместить все поля формы между тегами формы (<form>...</form>
) ex:
<form action="datacizprashtane.php" method="POST">
<?php
//write your php code here.
?>
<input type="submit" value="Промяна" >
</form>
Я надеюсь, что это поможет вам...
Дайте следующие рекомендации:
$sql = "UPDATE izprashtane SET НаселеноМясто=?,Тримесичие=? WHERE Сценарий=?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_bind_param($stmt, "sss", $_POST['2'], $_POST['3'], $_POST['6']);
mysqli_execute($stmt);
Кроме того, ваш код немного беспорядок, обязательно избегайте строк с помощью подготовленных операторов или mysqli_escape_string
чтобы избежать SQL-инъекций.
EDIT: Кроме того, добавьте
mysqli_set_charset($conn,"utf8");
После второго подключения к базе данных, а также убедитесь, что ваши входы все в вашей форме.
$conn ->set_charset("utf8")