2016-07-24 1 views
-1

Ошибка:У меня есть эта ошибка, и я не знаю, для чего это. любой орган может мне помочь?

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 ''marketer detail'('username','password','phone_number')VALUES('far','$1$gk0.pP4.' at line 1

Это мой PHP код:

<?php 
/
$action=$_POST['action']; 
if ($action=="insert_marketer"){ 
    insert_marketer(); 
} 

function insert_marketer(){ 

    $marketer=mysqli_connect("localhost","root","","marketer detail"); 
    $username = $_POST['username']; 

    var_dump("$username"); 
    $password = $_POST['password']; 
    $phone_number = $_POST['phone_number']; 

    if (!empty($username) && !empty($password)&& !empty($phone_number)){ 

     $password=crypt('$password'); 

     $result = mysqli_query($marketer,"INSERT INTO 'marketer detail'('username','password','phone_number')VALUES('$username','$password','$phone_number')"); 
     if($result) 
     { 
      var_dump('$password'); 
      echo "New record created successfully"; 
     } 
     else { 
      echo "Error: ". mysqli_error($marketer); 
     } 

    } 
    mysqli_close ($marketer) ; 
} 

?> 
+0

** ПРЕДУПРЕЖДЕНИЕ **: Дать свой собственный слой управления доступом не просто и есть много возможностей, чтобы заставить его серьезно ошибиться. Пожалуйста, не пишите свою собственную систему аутентификации, если какая-либо современная [инфраструктура разработки] (http://codegeekz.com/best-php-frameworks-for-developers/), например [Laravel] (http://laravel.com/) поставляется с надежной системой аутентификации (https://laravel.com/docs/5.2/authentication). Следуйте [передовой практике] (http://www.phptherightway.com/#security) и никогда не храните пароли со слабым хешем, например ['crypt', используя DES] (http://php.net/manual/en/function. crypt.php). – tadman

+0

** ПРЕДУПРЕЖДЕНИЕ **: при использовании 'mysqli' вы должны использовать [параметризованные запросы] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** интерполирование строк или конкатенацию для выполнения этого, потому что вы создали серьезную [SQL-инъекцию] (http://bobby-tables.com/). ** НИКОГДА не ставьте данные '$ _POST' или' $ _GET' непосредственно в запрос, это может быть очень вредно, если кто-то пытается использовать вашу ошибку. – tadman

+0

Я предлагаю проверить, действительно ли обман отвечает на ваш вопрос. Если нет, скажите мне, и я постараюсь помочь. Btw, посмотрите [здесь] (http://meta.stackoverflow.com/questions/291362/advice-for-non-native-english-speakers/291370#291370), следуя этим очень простым основным правилам написания, может помочь сообщений, чтобы выжить много. – peterh

ответ

2

INSERT INTO 'marketer detail'('username','password','phone_number')... ->Не используйте одинарные кавычки вокруг имени таблицы & имени столбца

Вместо использования кавычка `

INSERT INTO `marketer detail`(`username`,`password`,`phone_number`)... 

Цитируя первые два абзаца из этого POST

Backticks are to be used for table and column identifiers, but are only necessary when the identifier is a MySQL reserved keyword , or when the identifier contains whitespace characters or characters beyond a limited set (see below) It is often recommended to avoid using reserved keywords as column or table identifiers when possible, avoiding the quoting issue.

Single quotes should be used for string values like in the VALUES() list. Double quotes are supported by MySQL for string values as well, but single quotes are more widely accepted by other RDBMS, so it is a good habit to use single quotes instead of double.

+0

Я делаю это решение, возможно, дура? [Когда использовать одинарные кавычки, двойные кавычки и обратные ссылки?] (Http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks) – FirstOne

+0

вы забыли про ' ('username', 'password', 'phone_number') '- столбцы также не только таблицы. –

+0

Просто остановился при первой ошибке, которую я нашел. Неважно! обновление ... @ Fred-ii- – 1000111

0

Не используйте single quotes вокруг table name и column name

$result = mysqli_query($marketer,"INSERT INTO marketer detail(username,password,phone_number)VALUES('$username','$password','$phone_number')") or die(mysqli_error($marketer)); 
+0

'INSERT INTO marketer detail' - это будет ошибка из-за пространства. –

+0

yes mysqli_error выполнит свою работу, указав ошибку – user1234

+0

Итак, почему оставить ответ так? Это неверно. –

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