2013-09-04 3 views
0

Я начинающий веб-разработчик. Это моя первая попытка подключения к базе данных MySQL. Я получаю следующую синтаксическую ошибку (после успешного подключения к db?). Я знаю, что есть похожие вопросы, но я думаю, что я должен упустить что-то конкретное. Спасибо за ваше терпение!Ошибка синтаксиса MySQL В строке 1 (2)

Ошибка: У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «Имя, E-mail, пароль, Пол) VALUES (» «„“,„“,„“)» в строке 1

<?php 
$con=mysqli_connect("localhost", "shiftedr_admin", "", "shiftedr_whosthedeeusers"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$sql="INSERT INTO Users2 (Full Name, Email, Password, Gender) 
VALUES 
('$_POST[fullname]','$_POST[email]','$_POST[password]', '$_POST[gender]')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 

mysqli_close($con); 
?> 

Я дважды проверил, что значения соответствуют тому, как они находятся в БД точно и чувствительны к регистру. «Полное имя» - это как в таблице Users2, так и в php, с которой я звоню.

HTML-код, я использую, чтобы представить сценарий выглядит следующим образом:

<div class="reformed-form" style="width: 400px; border-right-color:"> 
<form method="post" name="accountcreation" id="accountcreation" action="insertnewaccounts.php" style="background-color:#CCFFFF;"> 
<center><h1 style="position:relative;left:0px;"> Account Creation </h1> 

    <table> 
    <tr> 
    <td align="right"> Full Name: </td> 
    <td align="left"><input type="text" id="fullname nameerror" name="fullname" min="4" class="spacing" placeholder="Your Full Name"/> </td></tr> 
    <tr> 
    <td align="right">Email</td> 
    <td align="left"><input type="text" id="email" name="email" min="5" placeholder="@" />  </td></tr> 
    <tr> 
    <td align="right"> Password </td> 
    <td align="left"><input type="text" id="Password" name="password" class="spacing" placeholder="Minimum 6 Characters"/>   </td></tr> 
    <tr> 
    <td align="right"> Confirm Password </td> 
    <td align="left"><input type="text" id="confirmpassword passworderror" class="spacing" name="pwc" placeholder="Confirm Password"/></td></tr> 
    <tr> 
    <td align="right"> Owner's' Gender: </td> 
    <td align="left"><input type="radio"> Male <input type="radio">Female </td></tr> 
    </table> 
    </center> 
    </dl> 
<input type="submit" value="Check" /></center> 
</form> 
+0

Пожалуйста, не используйте '$ _POST ['fullname']' непосредственно в вашем запросе. Что, если мое имя было: ''); DROP TABLE Users2; - '? Пожалуйста, смотрите: http://bobby-tables.com/ –

+0

Спасибо. Принимая добычу. Ценить это! – Peege151

+0

Hazmat, поможет ли я разбить его на два поля и ограничить ввод типа символа? – Peege151

ответ

3

Full Name имеет место в нем, так что синтаксис является недопустимым. Если фактическое название столбца - «Полное имя» (ouch), вам нужны обратные ссылки вокруг него.

INSERT INTO Users2 (`Full Name`, 

Ваш код уязвим для инъекций, и вы используете устаревшую MySQL API. Переключитесь на правильные параметризованные запросы с помощью PDO или mysqli.

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