-2

试图将一个简单的表单发布到我的数据库中,但无法正常工作。我通过 XAMPP 激活了 PHP 和 MySQL。数据库“E-mail list”是用“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

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

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

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

于 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 回答
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 回答