2016-07-19 2 views
2

Я пытаюсь добавить записи в базу данных из простой html-формы, которую я создал. Я продолжаю получать эту ошибку:Добавление записей в базу данных из html-формы

connected succesfullyError: 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 ')' at line 1

соединение успешно, но что-то не так с SQL заявление, и я не смог обнаружить ошибку.

Это форма

<form action="addplayer.php"method "post"/> 

     <p> id: <input type="text" name="playerid"/></p> 
     <p> Name: <input type="text" name="name"/></p> 
     <p> Age: <input type="text" name="age"/></p> 
     <p> Position: <input type="text" name="position"/></p> 
     <p> Nationality: <input type="text" name="nationality"/></p> 
    <input type="submit" value="submit"/> 

Это соединительном

 <?php 

define('DB_NAME', 'syokimaufc'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_HOST', 'localhost'); 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die ('could not connect: '. mysql_error()); 
} 
$db_selected= mysql_select_db(DB_NAME, $link); 
if (!$db_selected){ 
    die('can\'t use' . DB_NAME .': ' . mysql_error()); 
} 
echo 'connected successfully'; 

реализация

<?php 
require 'connection.php'; 


$id = filter_input(INPUT_POST, 'playerid'); 
$name = filter_input(INPUT_POST, 'name'); 
$age = filter_input(INPUT_POST, 'age'); 
$position = filter_input(INPUT_POST, 'position'); 
$nationality = filter_input(INPUT_POST, 'nationality'); 

$sql = "INSERT INTO players (playerid,Name,Age,Position,Nationslity) VALUES ('$id','$name','$age','$position',$nationality)"; 

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

Вы упускаете кавычки '$ nationality' и ваша страница ошеломляюще уязвимы для атак SQL инъекций. Прекратите использовать функции mysql_ * и сделайте себе одолжение, научившись использовать подготовленные заявления с PDO. –

ответ

1

Изменение:

$sql = "INSERT INTO players (playerid,Name,Age,Position,Nationslity) VALUES ('$id','$name','$age','$position',$nationality)"; 

To:

$sql = "INSERT INTO players (playerid,Name,Age,Position,Nationality) VALUES ('$id','$name','$age','$position','$nationality')"; 

UPDATE Как Джефф Puckett II правильно указано в разделе комментариев ниже, я дал первоначальный ответ поспешно и следовало бы упомянуть, что вы открываете себя для SQL инъекций и других неприятные проблемы, не дезинфицируя ваши данные.

Чтобы сделать вещи более безопасно, изменение:

$sql = "INSERT INTO players (playerid,Name,Age,Position,Nationslity) VALUES ('$id','$name','$age','$position',$nationality)"; 

To:

$_id = mysql_real_escape_string($id); 
$_name = mysql_real_escape_string($name); 
$_age = mysql_real_escape_string($age); 
$_position = mysql_real_escape_string($position); 
$_nationality = mysql_real_escape_string($nationality); 
$sql = "INSERT INTO players (playerid, Name, Age, Position, Nationality) VALUES ('$_id', '$_name', '$_age', '$_position', '$_nationality')"; 
+1

Хотя это не является технически неверным, это плохой ответ, потому что он не содержит лучших практик для дезинфекции ввода пользователя. Вы должны попытаться опубликовать лучший ответ, который вы можете сделать, а не самый быстрый самый грязный, и я считаю, что вы можете сделать лучше :) –

+0

Спасибо за помощь. Я новичок в php и изучаю каждый день. @JeffPuckettII я ценю ваш комментарий, но не доставку. –

+0

привет снова, я, кажется, столкнулся с другой небольшой проблемой. После запуска кода веб-страница выводит «Завершено успешно», но запись не отображается. Кажется, что он вводит нулевые значения для каждого из полей, потому что, когда я пытаюсь ввести другую запись, я получаю эту ошибку «успешно подключен» Ошибка: Дублировать запись «0» для ключа «PRIMARY» «Как я могу это решить? –

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