PHP不会将表单发布到数据库

时间:2012-12-14 01:32:44

标签: php forms mysqli

尝试将简单表单​​发布到我的数据库但无法使其工作。我通过XAMPP激活了PHP和MySQL。数据库“电子邮件列表”设置为“播放器”表。

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 个答案:

答案 0 :(得分:0)

SQL中缺少名称值的双引号。

VALUES ("'.$name.'", "'.$email.'", "'.$phone.'","'.$other.'")';

答案 1 :(得分:0)

使用Firefox / firebug查看参数和结果,并添加一个echo($ query);所以你可以在萤火虫中看到它。

答案 2 :(得分: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正常运行,拼写错误等。

答案 3 :(得分: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>

我认为这可以帮助您解决问题。