0

你好,我的第一个 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>

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

数据库映像

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

4

3 回答 3

3

试试这个作为你的查询:

$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']."')";
于 2012-05-23T17:48:47.430 回答
1

尝试将您的 $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]."')";
于 2012-05-23T17:46:57.667 回答
1

在处理关联数组时,键就像字符串。

$_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函数。

于 2012-05-23T18:02:59.567 回答