2016-12-05 1 views
0

Здравствуйте, я написал код для вставки данных из формы в базу данных MySQL:вставки данных из формы в мою SQL Databse с PHP

$conn = new PDO("mysql:dbname=data12;host=$servername", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$ul = $_POST['fname']; 
$sql="insert into t22 values('16',".$ul.")"; 

Записи добавляются, но это значение пусто. Я также пробовал другой синтаксис, как:

$sql="insert into t22 values('16',$ul)"; 
$sql="insert into t22 values('16','".$ul."')"; 
$sql="insert into t22 values('16',$ul)"; 

пожалуйста, помогите мне об этом.

+0

Что содержит '$ _POST ['fname']'? Покажите свою форму HTML. – Qirel

+0

Также ... вы нашли PDO, но не подготовили запросы? Шутки в сторону? Правильным использованием будет '$ sql-> prepare (" INSERT INTO t22 VALUES (?,?)) ";' И '$ sql-> execute (['16', $ _ POST ['fname']]);' – junkfoodjunkie

+0

Я также добавил $ stmt = $ conn-> prepare ("INSERT INTO t22 VALUES ('10',: fname)"); и интересно, что если я использую: $ u = 'testtt'; $ stmt-> bindparam (': fname', $ u); он будет работать, но когда я использую $ u = $ _POST ['fname']; вместо $ u = 'testtt'; это не будет работать. Я повторяю также команду $ u after post, и она имеет значение, но значение не будет зависеть от базы данных. – hosseinpink

ответ

0

Используйте этот код:

<?php 
$conn = new PDO("mysql:dbname=data12;host=$servername", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$ul = $_POST['fname']; 
$id = 16; 


$sql="INSERT INTO t22 (data1,data2) VALUES(?,?)"; 
$result = $conn->prepare($sql); 
$result->execute(array($id,$ul)); 

?> 

Изменить data1 и data2 с именами столбцов

Это работает для меня.
Я уверен, что он работает для вас!

+0

@hosseinpink Не стесняйтесь проверить мой ответ как правильный: D –

+0

это беспорядок. –

+0

как вы это понимаете? @MasivuyeCokile –

0

Прежде всего, чтобы убедиться, что пустые значения не вставлены, вам нужно проверить, установлено ли это значение из формы, а затем выполнить запрос, когда значение установлено, также вам нужно подготовить свои инструкции при использовании PDO, также не вводите напрямую переменные в свой запрос, вместо этого используйте заполнители.

Это, как вы код должен выглядеть:

<?php 
$conn = new PDO("mysql:dbname=data12;host=$servername", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


$errors = ""; 

$number = 16; 

if (isset($_POST['buttonName'])) { 

    //check if the field is not empty 


    if (empty($_POST['fname'])) { 

     echo "enter name"; 
     $errors++; 
    } else { 


     $ul = $_POST['fname']; 
    } 

    if ($errors <= 0) {//no errors lets insert 

     $sql = $conn->prepare("INSERT INTO t22 (id,name) values(?,?)"); 
     $sql->execute(array(
      $number, 
      $ul 
     )); 

     echo "record entered"; 
    } 

} 

?> 

Надеется, что это может направить вас на правильном направлении.

NB: важно, чтобы вы фильтровали и дезинфицировали значения $ _POST до , сохраняя их.

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