PHP插入MYSQL表单

时间:2012-05-23 17:39:44

标签: php mysql

您好我的第一个php项目有问题,我正在做一些关于它的教我自己。所以我在这里做了一个表格是代码:

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>

所以这里我要求用户输入要插入数据库的所有数据。这是数据库的屏幕截图:

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或类似于那个。但是在编写之前的数组中它包含正确的数据但不知何故它在数据库中写入了错误的数据。

3 个答案:

答案 0 :(得分: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']."')";

答案 1 :(得分: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]."')";

答案 2 :(得分: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函数。