-2

単純なフォームをデータベースに投稿しようとしていますが、機能させることができません。XAMPPを介してPHPとMySQLをアクティブ化しています。データベース「Eメールリスト」は、テーブル「Players」で設定されています。

PHPコード:

      <?php 
$mysqli = new mysqli('localhost', 'root', '', 'E-mail list');
    if(isset($_POST['save']))
    {
    $name = $mysqli->real_escape_string($_POST['name']);
    $email = $mysqli->real_escape_string($_POST['email']);
    $phone = $mysqli->real_escape_string($_POST['phone']);
    $other = $mysqli->real_escape_string($_POST['other']);
    $query = 'INSERT INTO Players (
    name,
    email,
    phone,
    other
    )
    VALUES ('.$name.', "'.$email.'", "'.$phone.'","'.$other.'")';
    if ($mysqli->query($query))
    {
    echo 'Data Saved Successfully.';
    }
    else
    {
    echo 'Cannot save data.';
    }}
    ?>

そしてフォーム:

<form id="myForm" method="post">>
<div data-role="fieldcontain">
    <label for="name">Please enter your name:</label>
    <input type="text" name="name" id="name" class="required" value="" autocomplete="off" />
    <label for="email">Please enter your e-mail:</label>
    <input type="text" name="email" id="email" value="" class="required" autocomplete="off"  />
    <label for="phone">Please enter your phone number:</label>
    <input type="number" name="phone" id="phone" value="" class="required" autocomplete="off"  />

<br><br>    
<label for="other">Other comments</label>
<textarea name="other" id="other" autocomplete="off" placeholder="Anything else you'd like to add?">
</textarea>
</form>
<p><strong id="error"></strong></p>
<br><br>
<input type="button" id="save" name="save" value="Submit Form" />
<p id="response"></p>
4

4 に答える 4

0

PHPとHTMLパーツの両方でコードにいくつかの変更を加えました。

PHPの場合:

<?php 
$mysqli = new mysqli('localhost', 'root', '', 'E-mail list');
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
if(isset($_POST['save']))
{
$name = $mysqli->real_escape_string($_POST['name']);
$email = $mysqli->real_escape_string($_POST['email']);
$phone = $mysqli->real_escape_string($_POST['phone']);
$other = $mysqli->real_escape_string($_POST['other']);
$query = "INSERT INTO Players (`name`,`email`,`phone`,`other`) VALUES ('".$name."','".$email."','".$phone."','".$other."')";
if($mysqli->query($query))
{
echo 'Data Saved Successfully.';
}
else
{
echo 'Cannot save data.';
}
}
?>

HTMLの場合:

<form id="myForm" method="post" action="">
<div data-role="fieldcontain">
    <label for="name">Please enter your name:</label>
    <input type="text" name="name" id="name" class="required" value="" autocomplete="off" /><br />
    <label for="email">Please enter your e-mail:</label>
    <input type="text" name="email" id="email" value="" class="required" autocomplete="off"  /><br />
    <label for="phone">Please enter your phone number:</label>
    <input type="number" name="phone" id="phone" value="" class="required" autocomplete="off"  />

<br><br>    
<label for="other">Other comments</label>
<textarea name="other" id="other" autocomplete="off" placeholder="Anything else you'd like to add?">
</textarea>
<p><strong id="error"></strong></p>
<br><br>
<input type="submit" id="save" name="save" value="Submit Form" />
<p id="response"></p>
</form>

これはあなたの問題を解決するのに役立つかもしれないと思います。

于 2012-12-14T09:39:36.943 に答える
0

SQLの名前の値に二重引用符がありません。

VALUES ("'.$name.'", "'.$email.'", "'.$phone.'","'.$other.'")';
于 2012-12-14T01:45:37.380 に答える
0

Firefox / firebugを使用してパラメーターと結果を確認し、echo($ query);を追加します。だからあなたはそれをfirebugで見ることができます。

于 2012-12-14T01:53:21.643 に答える
0

「メーリングリスト」は、大丈夫なはずですが、便利なデータベース名のようには思えません。
とにかく、あなたの目標は、発生する可能性のあるすべてのエラーを表示することです。

したがって、常にエラーをチェックし、「データを保存できません」よりも使いやすい形式で報告する必要があります。

常に接続を確認してください

$mysqli = new mysqli('localhost', 'root', '', 'E-mail list');
if ($mysqli->connect_error) {
    trigger_error($mysqli->connect_error);
}

クエリについても同じ

if (!$mysqli->query($query)) {
    trigger_error($mysqli->error." ".$query);
}

エラーメッセージが表示されない場合は、コードのロジックを確認してください。コードを実行したことがある場合、作成したコードを実行した場合、PHPが機能した場合、タイプミスなど。

于 2012-12-14T05:41:43.713 に答える