2012-05-23 5 views
0

Bonjour Je rencontre des problèmes avec mon premier projet php que je fais pour enseigner moi-même un peu it.So je l'ai fait une forme est le code ici:insert PHP sous forme 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> 

Donc, ici, je demande à l'utilisateur d'entrer toutes les données à insérer dans la base de données. Voici screenshoot base de données:

Database image

et voici insert.php qui est appelé action sous forme

<?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); 
?> 

Le problème est thath temps evry i soumettre des données, il écrit des données fausses dans la base de données tous dans le format 0--0-0-00 ou simmilar à thath. Mais dans le tableau avant est écrit il contient des données correctes mais en quelque sorte il écrit dans les données fausses de la base de données.

+0

Il y a beaucoup de possibilités d'injection SQL dans votre code. Vous devriez échapper à vos paramètres. Si vous écrivez $ sql, qu'est-ce que cela montre? – Sam

+0

Bien sûr je crois qu'il y a beaucoup de possibilités mais j'ai besoin de ceci seulement pour des buts d'étude, ferons sur la sécurité plus tard :) – HyperX

+1

Si vous échoez $ sql, qu'est-ce que cela montre? Je pense que vous devrez peut-être entourer vos params dans {accolades} si vous les incorporez dans la déclaration comme ça. – Sam

Répondre

0

Tentez de modifier votre variable $ sql à ceci:

$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

Oh lol thath fonctionne donc la syntaxe était fausse: S – HyperX

2

Essayez comme votre requête:

$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

Lorsque vous traitez avec des tableaux associatifs, les touches sont comme des chaînes. Vous devez placer vos variables entre accolades pour faciliter l'analyse. Je comprends que c'est à des fins d'apprentissage. Il est préférable d'apprendre les meilleures pratiques maintenant vice plus tard. Deux choses pour aider à la sécurité dans cette déclaration sont la fonction sprintf ainsi que la fonction mysql_real_escape_string.