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']}')";

これは学習目的であることを理解しています。今すぐベスト プラクティスを学び、後で学ぶことをお勧めします。このステートメントでセキュリティに役立つ 2 つのことは、sprintf関数とmysql_real_escape_string関数です。

于 2012-05-23T18:02:59.567 に答える