2012-05-23 4 views
0

Здравствуйте я имею проблемы с моим первым проектом PHP, который я делаю, чтобы научить мой сам немного о it.So я сделал форму здесь есть код:PHP вставки в MYSQL форме

vpis.html

<html> 
    <head> 
     <title>Php-Web Page - Input</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <div id="glava"> 
      <center>Php Spletna Stran</center> 
      <hr/> 
     </div> 

     <div id="menu"> 
      <center> 
       <a href="index.php">NAZAJ</a> 
       <a href="bris.html">BRISANJE</a> 
      </center> 
      <hr/> 
     </div> 

     <div id ="vsebina"> 

      <div div="vpisigr"> 
       <form action="insert.php" method="post"> 
        Vpisovanje igralca<br/> 
        ID:<input type="text" name="pid" size="20"/><br/> 
        Ime:<input type="text" name="pime" size="20"/><br/> 
        Priimek:<input type="text" name="ppriimek" size="20"/><br/> 
        Starost:<input type="text" name="pstarost" size="20"/><br/> 
        Velikost:<input type="text" name="pvelikost" size="20"/><br/> 
        Polozaj:<input type="text" name="ppolozaj" size="20"/><br/> 
        ID Kluba:<input type="text" name="ppid" size="20"/><br/> 
        <input type="submit" value="Shrani"/> 
        <input type="reset" value="Reset"/> 
       </form> 
      </div> 
     </div> 

     <hr/> 

     <div id="footer"> 
      <center>Vse pravice pridržane </center> 
     </div> 
    </body> 
<html> 

Поэтому здесь мне требуется от пользователя вводить все данные для вставки в базу данных. Вот screenshoot из базы данных:

Database image

и здесь insert.php, который называется формой действия

<?php 
header("Content-type: text/html; charset=utf-8"); 
$con = mysql_connect("localhost","username","pass"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("php", $con); 
//hmmmm ne dela 
$sql="INSERT INTO Igralec (iID, iIME, iPRIIMEK, iSTAROST, iVELIKOST, iPOLOZAJ, ID) 
VALUES ('$_POST[pid]', '$_POST[pime]', '$_POST[ppriimek]', '$_POST[pstarost]', '$_POST[pvelikost]', '$_POST[ppolozaj]', '$_POST[ppid]')"; 

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

//die(print_r($_POST)); 
echo "Dodana je ena nova vrstica"; 


mysql_close($con); 
?> 

Проблема в Тат время Эври я представить данные, пишет ложные данные в базу данных все в формате, как 0-0-0-00 или simmilar tohh. Но в массиве до этого он содержит правильные данные, но как-то он записывает в базу данных ложные данные.

+0

В вашем коде имеется множество возможностей SQL-инъекций. Вам следует избегать ваших параметров. Если вы эхо $ sql, что это значит? – Sam

+0

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

+1

Если вы эхо $ sql, что это показывает? Я думаю, вам может понадобиться заключить ваши параметры в {фигурные скобки}, если вы вставляете их в это утверждение. – Sam

ответ

0

Попробуйте изменить вашу переменную $ SQL для этого:

$sql="INSERT INTO Igralec (iID, iIME, iPRIIMEK, iSTAROST, iVELIKOST, iPOLOZAJ, ID) 
VALUES ('".$_POST[pid]."', '".$_POST[pime]."', '".$_POST[ppriimek]."', '".$_POST[pstarost]."', '".$_POST[pvelikost]."', '".$_POST[ppolozaj]."', '".$_POST[ppid]."')"; 
+0

О, LOL thath работает, поэтому синтаксис был неправильным: S – HyperX

2

Попробуйте это как ваш запрос:

$sql="INSERT INTO Igralec (iID, iIME, iPRIIMEK, iSTAROST, iVELIKOST, iPOLOZAJ, ID) 
VALUES ('".$_POST['pid']."', '".$_POST['pime']."', '".$_POST['ppriimek']."', '".$_POST['pstarost']."', '".$_POST['pvelikost']."', '".$_POST['ppolozaj']."', '".$_POST['ppid']."')"; 
0

При работе с ассоциативными массивами, ключи, как струны.

$_POST['ppolozaj'] 

Вы должны поместить свои переменные в фигурные скобки, чтобы упростить синтаксический анализ.

$sql="INSERT INTO Igralec (iID, iIME, iPRIIMEK, iSTAROST, iVELIKOST, iPOLOZAJ, ID) 
VALUES ('{$_POST['pid']}', '{$_POST['pime']}', '{$_POST['ppriimek']}', '{$_POST['pstarost']}', '{$_POST['pvelikost']}', '{$_POST['ppolozaj']}', '{$_POST['ppid']}')"; 

Я понимаю, что это предназначено для обучения. Лучше всего изучать лучшие практики, которые теперь используются позже. Две вещи, которые помогут с безопасностью в этом заявлении, - это функция sprintf, а также функция mysql_real_escape_string.

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