2013-10-25 2 views
0

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

<?php include 'includes/header.php'; ?> 
<?php 
    if (isset($_post['submit'])) { 
     $ime_priimek = $_post['ime_priimek']; 
     $spol = $_post['spol']; 
     $razred = $_post['razred']; 
     $slika = $_post['slika']; 
     $sql = mysqli_query($con, "INSERT INTO uporabniki (ime_priimek, spol, razred, slika) VALUES ('". $ime_priimek ."' , '". $spol ."' , '". $razred ."' , '". $slika ."' ,)" or die(mysql_error())); 
     echo "Dodan"; 
    } else { 
     echo "Ni dodan"; 
    } 
?> 
<div class="container main"> 
    <div class="row"> 
     <div class="col-lg-8"> 
      <div class="panel panel-primary"> 
       <div class="panel-heading">Dodaj uporabnika</div> 
       <div class="panel-body"> 
       <form role="form" action="admin.php?g=miha" method="post" accept-charset="utf-8"> 
        <div class="form-group"> 
        <label for="ime_priimek">Ime in priimek:</label> 
        <input type="text" name="ime_priimek" class="form-control" id="ime_priimek" placeholder="Andrej Novak"> 
        </div> 
        <div class="form-group"> 
        <label for="spol">Spol:</label> 
        <input type="text" name="spol" class="form-control" id="spol" placeholder="Moški"> 
        </div> 
        <div class="form-group"> 
        <label for="razred">Razred:</label> 
        <input type="text" name="razred" class="form-control" id="razred" placeholder="2. Mb"> 
        </div> 
        <div class="form-group"> 
        <label for="slika">Slika:</label> 
        <input type="text" name="slika" class="form-control" id="slika" placeholder="https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-ash3/1391614_10200902760433385_105742999_n.jpg"> 
        </div> 
        <button class="btn btn-primary" name="submit" type="submit">Dodaj</button> 
       </form> 
       </div> 
      </div> 
     </div> 

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

+0

Какая ошибка вы получаете? Кстати, ваш код подвержен SQL-инъекциям. Проверьте эту [полезную документацию] (http://xkcd.com/327/) –

+0

«...,». $ slika. "',) ..." Удалить последний, – bksi

+0

[прочитать это] (http://stackoverflow.com/a/601457/623952), а затем [это] (http://stackoverflow.com/questions/ 60174/how-can-i-prevent-sql-injection-in-php) –

ответ

0

Каждый раз, когда хорошо отформатировать ваши запросы. Если вы создали свой, вы должны увидеть, что у вас есть один дополнительный, в конце

$query = "INSERT INTO uporabniki (ime_priimek, spol, razred, slika)"; 
$query .= " VALUES ('". $ime_priimek ."','". $spol ."','". $razred ."','". $slika ."')"; 
$sql = mysqli_query($con, $query) OR die("ERROR: ".mysqli_error()); 
+0

Довольно уверен, что OP нужно будет использовать ['mysqli_multi_query'] (http: // php.net/manual/en/mysqli.multi-query.php) для этого. –

+0

Хм, это всего лишь один оператор insert. Зачем нужен multi_query? – bksi

+0

Из-за конкатенации в '$ query. =' –

1

С одной стороны, $_POST является superglobal и должны быть в верхнем регистре, как этого $_POST

твои все в нижнем регистре $_post

Я также заметил, что нет БД учетных данных для $con в вашем публикуемую коде.

Вы должны делать что-то аффект:

$con=mysqli_connect("xxx_host", "xxx_user", "xxx_password"); 
mysqli_query($con, "INSERT INTO uporabniki (ime_priimek, spol, razred, slika) VALUES 
('". $ime_priimek ."' , '". $spol ."' , '". $razred ."' , '". $slika ."')" or die(mysql_error())); 

и вы имели паразитной запятую в '". $slika ."' ,)"


Вы также можете попробовать этот метод:

$mysql_hostname = 'xxx'; 
$mysql_username = 'xxx'; 
$mysql_password = 'xxx'; 
$mysql_dbname = 'xxx'; 

$con= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 

$sql = $con->prepare("INSERT INTO uporabniki (ime_priimek, spol, razred, slika) VALUES (?, ? ,? ,?)"); 
$sql->bindParam(1, $ime_priimek); 
$sql->bindParam(2, $spol); 
$sql->bindParam(3, $razred); 
$sql->bindParam(4, $slika); 
$sql->execute(); 
+0

Это тоже не помогло. Он проходит без каких-либо ошибок, но не будет вставляться в базу данных. – user2912934

+0

@ user2912934 У вас есть паразитная запятая также в ''. $ Slika. "',' –

+0

@ user2912934 и обратитесь к [ответу bksi] (http: // stackoverflow .com/users/965689/bksi) –

1

В коде есть несколько ошибок.

$_post? Если вы сами не объявили, PHP имеет только $_POST. Variable names are case-sensitive.

Я полагаю, что в принципе, почему ваша вставка не будет работать, то есть, больше.

Вы получаете значения, отправленные от клиента и замаскирующие их, как есть, непосредственно внутри SQL-запроса. Плохой ход. Возможно, вы хотите изучить принципы SQL Injection и как их предотвратить.

Кроме того, я не вижу, как mysql_error() поможет вам здесь, sinse вы используете MySQLi. Вместо этого попробуйте mysqli_error().

0

Вам нужно изменить $ _post в верхний регистр. Нравится:

<?php 
    if (isset($_POST['submit'])) { 
     $ime_priimek = $_POST['ime_priimek']; 
     $spol = $_POST['spol']; 
     $razred = $_POST['razred']; 
     $slika = $_POST['slika']; 
     $sql = mysqli_query($con, "INSERT INTO uporabniki (ime_priimek, spol, razred, slika) VALUES ('". $ime_priimek ."' , '". $spol ."' , '". $razred ."' , '". $slika ."' ,)" or die(mysql_error())); 
     echo "Dodan"; 
    } else { 
     echo "Ni dodan"; 
    } 
?> 
Смежные вопросы