Для начала я хотел бы извиниться заранее за любую нехватку информации, я попытаюсь описать свою проблему как можно лучше и предоставить вам столько данных, сколько считаю.Как обновить таблицу MySQL через PHP?
Итак, я новичок в PHP, и у меня было несколько проблем с ним в последние несколько дней. У меня есть две основные проблемы, первая из которых я прошу о помощи в этой теме.
В принципе, я создал сайт для своих родителей для их недавно найденной компании MotorHome Hire. Это всего лишь небольшая операционная операция, поэтому я предложил создать веб-сайт, поскольку у меня есть краткая история в HTML, и вскоре я начну обучение в области веб-разработки, поэтому подумал, что было бы неплохо изучить кое-что путь.
Одна страница веб-сайта позволяет клиенту проверить текущую доступность MotorHome, которая обновляется через базу данных, размещенную локально через MySQL. календарь работает по назначению, и я могу обновить его вручную, используя HeidiSQL, чтобы добавить записи в таблицу. Однако я хотел бы создать страницу администратора, где мои родители могли бы легко обновлять базу данных через веб-сайт, не получая слишком технически участия.
Это мой PHP код:
<?php
if(isset($_POST['update']))
{
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = 'PASS';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
die('Could not connect: ' . mysql_error());
}
$olddate = $_POST['date'];
$name = $_POST['name'];
$newdate = strtotime(str_replace('/', '-', $olddate));
$sql = "UPDATE calendar ".
"SET date = $newdate ";
"SET customer = $name" ;
mysqli_select_db($conn, 'calendar');
$retval = mysqli_query($conn, $sql);
if(! $retval)
{
die('Could not update data: ' . mysqli_error($conn));
}
echo "Updated data successfully\n";
mysqli_close($conn);
}
else
{
?>
<?php
}
?>
вопрос у меня, однако, является то, что каждый раз, когда я ударил обновления по форме, я получаю эту ошибку:
Could not update data: Duplicate entry '0000-00-00' for key 'PRIMARY'
Это наводит на мысль для меня, что база данных получает значение 0000-00-00 вместо даты, введенной в форму. Он также предлагает мне, что он пытается добавить в таблицу несколько записей 0000-00-00, поскольку в настоящее время это не запись в таблице?
Я считаю, что проблема связана с несовместимостью в типах «даты» для html и SQL, однако я не уверен, я попытался исправить формат даты, так как HTML запрашивает его в форме DD/MM/ГОД, тогда как база данных хранит его в форме YEAR-MM-DD.
Любое просвещение по моей ситуации было бы очень благодарным, поскольку мой разум полностью измотан в этой точке.
EDIT:
Так что я считаю, что INSERT INTO маршрута правильным способа есть, я обновил свой PHP код следующим образом:
<?php
if(isset($_POST['update']))
{
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = 'PASS';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
die('Could not connect: ' . mysql_error());
}
$olddate = $_POST['date'];
$name = $_POST['name'];
$newdate = strtotime(str_replace('/', '-', $olddate));
$sql = "INSERT INTO calendar (date, customer)
VALUES ($olddate, $name)";
mysqli_select_db($conn, 'calendar');
$retval = mysqli_query($conn, $sql);
if(! $retval)
{
die('Could not update data: ' . mysqli_error($conn));
}
echo "Updated data successfully\n";
mysqli_close($conn);
}
else
{
?>
<?php
}
?>
Но я теперь получаю ошибку:
Could not update data: Unknown column 'test' in 'field list'
«test» - это имя, которое я использовал для поля клиента, однако я не знаю, что такое «список полей» - это ссылка на? Любая помощь?
'' SET date = $ newdate ";' <= * доллар останавливается здесь *. Полуколоны - это конец символа оператора и '' SET customer = $ name ";' никогда не будет выполняться. –
Поскольку '$ name' - это строка, вы должны использовать апострофии в SQL-запросе. 'VALUES ($ olddate, '$ name')' – Genhis
как данные, связанные с датой –