1

私は次の簡単なフォームを持っています

シンプルな形

試運転フォーム

    <form method=post action='android.php'>
    firstname:<input type='text' name='firstname'/><br>
    secondname:<input type='text' name='secondname'/><br>
    email:<input type='text' name='email'/><br>
    password<input type='text' name='password'/><br>
    <input type=submit name='submit' value='chekiii'/><br>
    </form>
    </body>

phpファイルは以下のものですが、データベースにデータを入力せず、エラーを表示しません...実際、エラーコードを解析した後、「成功」メッセージをエコーアウトします。

<?php
$con = mysql_connect("www.######.com","#####","######");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("android", $con);
if ($_POST[submit])
{
$sql=mysql_query("INSERT INTO magic (firstname,secondname,email,password)
VALUES
('$_POST[firstname]','$_POST[secondname]','$_POST[email]','$_POST[password]')");

if (mysql_query(!$sql,$con))
{
    die('Error: ' . mysql_error());
}
echo "success";
mysql_close($con);}
?>

どのようなエラーが発生する可能性がありますか?

4

5 に答える 5

0

$sql クエリをエコーし​​てから、手動でデータベースに追加してみましたか? これにより、作業できるエラーが発生する可能性があります。私が気づいたことの 1 つは、$_POST 変数を引用符で囲んでいないこと$_POST['firstname']です$_POST[firstname]

ああ、このフォームを使用する前に、ユーザー入力にいくつかのチェックを追加してください...

于 2013-03-10T10:25:05.843 に答える
0

これはうまくいきません

$sql=mysql_query("INSERT INTO magic (firstname,secondname,email,password)
VALUES ('$_POST[firstname]','$_POST[secondname]','$_POST[email]','$_POST[password]')");

これを使って

"INSERT INTO magic (firstname,secondname,email,password)
VALUES ('".$_POST['firstname']."','".$_POST['secondname']."','".$_POST['email']."','".$_POST['password']."')"

これも変更します:

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

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

コード全体にエラーがあります

<?php
$con = mysql_connect("www.######.com","#####","######");
if (!$con){
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("android", $con);
if ($_POST['submit']){ //$_POST['submit'] NOT $_POST[submit]
$sql=mysql_query("INSERT INTO magic (firstname,secondname,email,password)
    VALUES ('".$_POST['firstname']."','".$_POST['secondname']."','".$_POST['email']."','".$_POST['password']."')");

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

echo "success";
mysql_close($con);
}
于 2013-03-10T10:25:41.217 に答える
0

$_POST 変数をクエリ文字列に渡すときにエラーが発生します。

まず、このデータをクエリに投入する前にサニタイズする必要があります。そうしないと、SQL インジェクション攻撃を受けやすくなります。

次に、エラーを修正し、$_POST 変数を追加{して}前後に配置し、二重引用符で囲まれた文字列で評価できるようにします。$_POST 変数インデックスにも一重引用符がありません。

$sql=mysql_query("INSERT INTO magic (firstname,secondname,email,password)
  VALUES
  ('{$_POST['firstname']}','{$_POST['secondname']}','{$_POST['email']}','{$_POST['password']}')");

詳細な説明については、php変数のドキュメントを参照してください。

于 2013-03-10T10:26:52.657 に答える
0

非推奨のコードを使用しないでください:

$con = mysqli_connect(..... );
mysqli_select_db(...);
mysqli_query($con,...); 
and to every $_POST mysqli_real_escape_string($con,....);
于 2013-03-10T10:28:24.630 に答える
0

問題は、データベースへの参照にありました。私のホストによってインストールされた CPANEL では、初心者として認識していなかったデータベース命名プレフィックスがあることに気付きませんでした(まだ)。みんな、ありがとう。まだまだ勉強中。

于 2013-10-03T11:16:43.377 に答える