2015-06-04 5 views
0

Как исправить эту ошибку?Как исправить эту синтаксическую ошибку SQL?

«У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с« в строке 1. ».

Я использую сервер Wamp. локальный: 81.

<?php 
    $conn =mysqli_connect('localhost', 'root' , '','register'); 

    if(isset($_POST['submit'])) 
    { 
    $fname=$_POST['FName']; 
    $mname = $_POST['UName']; 
    $email = $_POST['email']; 
    $contact = $_POST['contact']; 
    $gender = $_POST['gender']; 
    $Password = $_POST['Pass']; 
    $Repassword = $_POST['Rpass']; 
    $sql = "INSERT INTO registered(FullName,UserName,Email,Contact#,Gender,Password,RPassword) values('$fname','$mname','$email','$contact','$gender','$Password','$Repassword')"; 

    if ($conn->query($sql) === TRUE) { 
     echo "New record created successfully"; 
     print '<script>alert("Successfully Submit Data!");</script>'; 
    } 
    else{ 
     echo "Error: " . $sql . "<br>" . $conn->error; 
    } 
    $conn->close(); 
    } 
?> 
+2

'Контакт #' в качестве имени столбца? Нет, и вы не избежали ввода, что приведет к SQL Injection. – Raptor

+0

'Контакт #' как имя столбца? удалите '#' из имени столбца таблицы. –

+0

Ваш код подвержен риску от того, что хакеры делают все, что хотят от своей базы данных (читая всю вашу базу данных, удаляя все из нее, добавляя что-нибудь к ней, изменяя ее и т. Д.). Чтобы устранить этот риск, используйте подготовленные заявления. – kojow7

ответ

3

Я бы рекомендовал использовать обратные метки (`) вокруг ваших имен столбцов, чтобы SQL не видел его чем-то другим. Вы также хотите убедиться, что вы также избегаете данных.

$sql = "INSERT INTO `registered` 
(`FullName`, `UserName`, `Email`, `Contact#`, `Gender`, `Password`, `RPassword`)    
VALUES (?, ?, ?, ?, ?, ?, ?)"; 
$stmt = $mysqli->prepare($sql); 
$stmt->bind_param('sssssss', $fname, $mname, $email, $contact, $gender, $Password, $Repassword); 
if ($stmt->exec()) { 
    //Success 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

Для получения дополнительной информации о SQL инъекций, и как это может повлиять вас, пожалуйста, проверьте this post.

+0

ok wait, Позвольте мне проверить –

+0

Ouhhhhhhhhh Thankxx alot :) Thankkk Вы так много ,,, Исправлено, Теперь мои данные успешно сохраняются, вы отлично –

+0

Спасибо Franker Z –

-1

попробовать это

INSERT INTO `registered`(`FullName`,`UserName`,`Email`,`Contact#`,`Gender`,`Password`,`RPassword`)    
values('$fname','$mname','$email','$contact','$gender','$Password','$Repassword')"; 
-1

попробовать этот

$sql = "INSERT INTO registered(FullName,UserName,Email,Contact#,Gender,Password,RPassword)    
values($fname,$mname,$email,$contact,$gender,$Password,$Repassword)"; 
+0

Добро пожаловать в stackoverflow. Я рекомендую проверить существующие ответы, чтобы убедиться, что он еще не был дан ответ, и рассмотрите возможность просмотра страницы [tour] (http://stackoverflow.com/tour). Ваш ответ не только неверен, но и на самом деле усугубляет ситуацию, потому что теперь вы не цитируете ничего, что входит в базу данных, и, несомненно, вызовет ошибку SQL при вставке. – FrankerZ

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