2015-05-12 4 views
1

Я пытаюсь вставить строку в таблицу, но она дает мне синтаксическую ошибку.Невозможно вставить строку в таблицу с помощью 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); 




    } 

    ?> 

Здесь ошибка я получаю:

ERROR: Could not able to execute INSERT INTO airport_data (ICAO,IATA,Airport_name,Coordinates,Time_zone_utc,DST,UTC,From,To,Country_code,Remarks,Country) VALUES ('oprn','op','islamabad airport','islam','+9','other','+8',STR_TO_DATE('2015-05-26', '%m/%d/%y'),STR_TO_DATE('2015-05-20', '%m/%d/%y'),'op','p','Pakistan'). You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'From,To,Country_code,Remarks,Country) VALUES ('oprn','op','islamabad airport','i' at line 1

ответ

0

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

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

+1

вы можете использовать их, но нужно установить в обратные кавычки – sergio

+0

дайте мне попробовать –

+0

@sergio: не кавычки, '' ', а backticks. – panther

2

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

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

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

+0

Я пробовал, но это не помогло .. я даже изменил имя моего куба DB с 'From' на 'From_date' аналогично 'To_date', но с той же ошибкой. Я лично считаю, что дата ввода iam не является ритуальным способом. –

+0

@AmmarUlHassan: имена экранирующих столбцов должны решить эту проблему. Переименовать столбцы тоже. Возможно, у вас может появиться сообщение об ошибке, но не то же самое. – panther

+0

после использования обратных ошибок ошибка «Столбец« From_date »не может быть пустым» –

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."', 
Смежные вопросы