mysql — невозможно вставить строку в таблицу, используя mysqli (PHP)

Я пытаюсь вставить строку в таблицу, но это дает мне синтаксическую ошибку.

Вот код HTML:

    <form method="post" action="" >
<!--form fields-->

<div class="control-group">

<div class="customer_data">
<div class="controls" id="id_milesPerDay">

<label for="ICAO" class="left-text">ICAO:</label>

<input type="text" id="ICAO" style='text-transform:uppercase'  maxlength="4" name="ICAO" placeholder="" class="input-xlarge" required>
</div>

<div class="controls">
<label for="IATA" class="left-text">IATA:</label>

<input type="text" name="IATA" maxlength="3" style='text-transform:uppercase' id="IATA" placeholder="" class="input-xlarge" required>
</div>

<div class="controls">
<label for="airportname" class="left-text">Airport Name:</label>

<input type="text" name="airport_name" maxlength=""  id="Airport_Name" placeholder="" class="input-xlarge" required>
</div>

<div class="controls">
<label for="coordinates" class="left-text">Coordinates:</label>

<input type="text" name="coordinates" maxlength=""  id="Coordinates" placeholder="" class="input-xlarge" required>
</div>

<div class="controls">
<label for="Time_zone_UTC" class="left-text">Time Zone UTC:</label>

<input type="text" name="Time_zone_UTC" maxlength="3"  id="Time_zone_UTC" placeholder="" class="input-xlarge" required>
</div>

<div class="controls">
<label for="DST" class="left-text">DST:</label>

<input type="checkbox" name="dst" value="other"  id="DST" placeholder="" class="input-xlarge">
</div>

<div class="controls text">
<label for="utc" class="left-text">UTC:</label>

<input type="text" name="utc" maxlength="3"   id="UTC" placeholder="" class="input-xlarge">
</div>

<div class="controls text">
<label for="From_date" class="left-text">From Date:</label>

<input type="date" name="from_date" maxlength=""   id="fromdate" placeholder="" class="input-xlarge">

</div>
<div class="controls text">
<label for="To_date" class="left-text">To Date:</label>

<input type="date" name="to_date" maxlength=""   id="todate" placeholder="" class="input-xlarge">
</div>
<!-- Button -->
<div class="control-group">
<div class="controls">
<input type="submit" value="Submit" id="Submit" class="btn btn-success" name="Submit">
</div>
</div>
</div>
<div class="customer_aircraft">
<div class="controls">
<label for="country_code" class="left-text">Country Code:</label>

<input type="text"  name="country_code" maxlength="2" style='text-transform:uppercase'  id="countrycode" placeholder="" class="input-xlarge" required>
</div>

<div class="controls">
<label for="Remarks" class="left-text">Remarks:</label>

<textarea cols="25" rows="7"  name="remarks"  id="remarks" placeholder="" class="input-xlarge"></textarea>

</div>

<div class="controls">
<label for="Country" class="left-text">Country:        </label>

<input type="text"  name="country" maxlength=""   id="country" placeholder="" class="input-xlarge" required>
</div>
</div>

</div>
</form>
</body>
</html>

PHP-код:

     <?php

$link=require ("Connection.php");

error_reporting(E_ALL); ini_set('display_errors', 1);


if(isset($_POST['Submit']))
{
$ICAO= mysqli_real_escape_string($link,$_POST['ICAO']);
$IATA= mysqli_real_escape_string($link,$_POST['IATA']);
$Airport_Name= mysqli_real_escape_string($link,$_POST['airport_name']);
$coordinates= mysqli_real_escape_string($link,$_POST['coordinates']);
$Time_zone_UTC= mysqli_real_escape_string($link,$_POST['Time_zone_UTC']);
$DST= mysqli_real_escape_string($link,$_POST['dst']);
$UTC= mysqli_real_escape_string($link,$_POST['utc']);

$from_date = mysqli_real_escape_string($link,$_POST['from_date']);

$to_date =   mysqli_real_escape_string($link,$_POST['to_date'];


$country_code= mysqli_real_escape_string($link,$_POST['country_code']);
$remarks= mysqli_real_escape_string($link,$_POST['remarks']);
$Country= mysqli_real_escape_string($link,$_POST['country']);


//inserting records//

$sql="INSERT INTO airport_data (ICAO,IATA,Airport_name,Coordinates,Time_zone_utc,DST,UTC,From,To,Country_code,Remarks,Country) VALUES ('$ICAO','$IATA','$Airport_Name','$coordinates','$Time_zone_UTC','$DST','$UTC',STR_TO_DATE('$from_date', '%m/%d/%y'),STR_TO_DATE('$to_date', '%m/%d/%y'),'$country_code','$remarks','$Country')";
if(mysqli_query($link, $sql))
{
echo "Records added successfully.";
}
else
{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

// close connection
mysqli_close($link);




}

?>

Вот ошибка, которую я получаю:

ОШИБКА: не удалось выполнить INSERT INTO airport_data (ИКАО, IATA, имя_ аэропорта, координаты, Time_zone_utc, DST, UTC, с, по, код страны, примечания, страна) VALUES («oprn», «op», «islamabad airport», «ислам», «+ 9», «другое», «+ 8», STR_TO_DATE («2015-05-26», «% m /% d /% y»), STR_TO_DATE («2015-05-20», ‘% м /% г /% г’), ‘оп’, ‘р’, ‘Пакистан’). У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом со значениями «От, До, Код страны, Примечания, Страна) ЗНАЧЕНИЯ (« oprn »,« op »,« islamabad airport »,« i »в строке 1).

1

Решение

Избегайте (как минимум) зарезервированных слов в именах столбцов.

... `From`, `To`, ...

Полный список зарезервированных слов MySQL находится в http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html.

2

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

from и to являются резервным ключевым словом. Избегайте использования их в качестве имени столбца. Вам нужно изменить название столбца.

Вы можете найти более подробную информацию Вот

0

На самом деле формат моих переменных даты был неправильным, поэтому мне пришлось изменить его следующим образом

    $from_date = new DateTime($_POST['from_date']);
$to_date = new DateTime($_POST['to_date']);

Insert the following into the database
$from_date = mysqli_real_escape_string($link, $from_date->format('Y-m-d'));
$to_date = mysqli_real_escape_string($link, $to_date->format('Y-m-d'));

И в запросе
что-то вроде

    ,'".$from_date."','".$to_date."',
0
По вопросам рекламы [email protected]