2014-12-09 5 views
-2

Я получаю следующее сообщение об ошибке:как исправить эту ошибку в синтаксисе SQL

Error: 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 '','[email protected]','132344545','y8khoob5')' at line 3

Вот мой код:

<?php 
if (!isset($_POST['submit'])) { 
    $link = mysql_connect("localhost","root",""); 
if (!$link) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("sh", $link); 
    function createRandomPassword() { 
    $chars = "abcdefghijkmnopqrstuvwxyz023456789"; 
    srand((double)microtime()*1000000); 
    $i = 0; 
    $pass = '' ; 
    while ($i <= 7) { 
     $num = rand() % 33; 
     $tmp = substr($chars, $num, 1); 
     $pass = $pass . $tmp; 
     $i++; 
    } 
    return $pass; 
} 
$confirmation = createRandomPassword(); 
    $datein = $_POST['start']; 
    $dateout = $_POST['end']; 
    $name = $_POST['name']; 
    $address = $_POST['address'];; 
    $email = $_POST['email']; 
    $contact = $_POST['contact']; 
    $status= 'Active'; 


    $sql="INSERT INTO reservation (datein, dateout, name, address, email, contact, confirmation) 
VALUES 
('$datein','$dateout','$name',$address','$email','$contact','$confirmation')"; 
mysql_query("INSERT INTO resinvent (datein, dateout, confirmation, status) VALUES ('$datein','$dateout','$confirmation','$status')"); 

if (!mysql_query($sql,$link)) 
    { 
    die('Error: ' . mysql_error()); 
    } 

} 
mysql_close($link) 
?> 
+1

** ПРЕДУПРЕЖДЕНИЕ **: Это ужасно неуверенно, потому что эти параметры не были [надлежащим образом экранированы] (http://bobby-tables.com/php). Вы должны ** НИКОГДА не ставить данные '$ _POST' непосредственно в запрос: он создает гигантскую ошибку [SQL injection bug] (http://bobby-tables.com/). 'mysql_query' - устаревший интерфейс и не должен использоваться, он удаляется из PHP. Современная замена, такая как [PDO, не трудно учиться] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/). Руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), объясняет лучшие практики. – tadman

ответ

5

Вы упускаете цитату для $address'

в

VALUES ('$datein','$dateout','$name', $address', 
            ^right there 

так делают:

VALUES ('$datein','$dateout','$name','$address', 

+0

ohh yeahh .. я пропустил этот код. спасибо очень много .. Я забираю несколько часов, чтобы узнать об ошибке. и не видел этого .. :) и спасибо за предложение. –

+1

@MiRa BTW: Вы можете принять ответ, который помог вам больше всего и решить вашу проблему! (http://meta.stackexchange.com/q/5234) – Rizier123

+0

@MiRa Добро пожаловать. –

Смежные вопросы