0

我对 PHP 相当陌生,我正在尝试将用户的输入保存到 mysql 数据库中。我按照在线教程进行了操作,但是每次输入用户信息时,网站都会告诉我它失败了。我唯一能想到的是主机名(我从 phpadmin 复制并粘贴了它)。如果有什么问题,请告诉我。

联系人.html

<section id="mid_section">
                <div id="boxes">
                    <h1>
                        Leave your information here for a quick reponse:
                    </h1>
                    <br/>
                    <form id="myform" action="userinfo.php" method="post">
                        Name:<input type="text" value="name">
                        Email:<input type="email" value="email">
                        Phone:<input type= "tel" value="phone(opt)">
                        <button id="sub">Submit</button>
                    </form>

数据库.php

<?php
    $conn = mysql_connect('custsql.eigbox.net','username','password');
    $db= mysql_select_db('visitors');
?>

用户信息.php

<?php
    include_once('db.php');

    $name =$_POST['name'];
    $email =$_POST['email'];
    $phone =$_POST['phone'];

    if(mysql_query("INSERT INTO users (name,email,phone) VALUES ('$name','$email','$phone')"))
    echo"successfully inserted";
    else
    echo "failed";
?>

myscript.js

$("#sub").click(function(){

    $.post($("#myform").attr("action"), $("#myform:input").serializeArray(), function(info){$("#result").html(info);});
    });

$("#myform").submit(function(){
    return false;
    });
4

2 回答 2

4

由于您可能是 php 的新手,一方面遵循教程很好,但是选择正确的源可能是一个常见的灾难性问题。

当您使用类似的函数时mysql_select_dbmysql_query它基本上意味着您使用的是已弃用的 mysql 样式。

如果你去官方 php 文档并搜索 mysql 方法,它会告诉你它的弃用。

但是,这里的问题不是您与数据库交互的方式,您的编码风格仍然有效,许多人仍然这样做。

mysql_我只是告诉你作为一个新手,人们倾向于使用 mysqli 和/或 PDO ,而不是函数。把他们当作你未来的朋友。

你的问题呢,我相信一切都很好,除了你的 mysql_query 函数看起来很奇怪。尝试以下代码而不是您的查询语句

if (mysql_query("INSERT INTO `users` (`name`, `email`, `phone`) VALUES ('".$name."','".$email."','".$phone."')"))

或者出于安全原因甚至更好

if (mysql_query("INSERT INTO `users` (`name`, `email`, `phone`) VALUES ('".mysql_real_escape_string($name)."','".mysql_real_escape_string($email)."','".mysql_real_escape_string($phone)."')"))

如果不是这种情况,并且您仍然收到“失败”错误语句,您将需要进行很少的调试,这里的人将能够帮助您

因此,您将需要使用以下内容而不是您现在拥有的内容

if (mysql_query("INSERT INTO `users` (`name`, `email`, `phone`) VALUES ('".mysql_real_escape_string($name)."','".mysql_real_escape_string($email)."','".mysql_real_escape_string($phone)."')")) {
    echo 'Success!'
} else {
    echo mysql_error();
    exit;
}

让我们看看发生了什么

于 2013-08-30T01:47:58.610 回答
1

首先,在表单的每个属性上使用名称。所以,contact.html 将是

<form id="myform" action="userinfo.php" method="post">
                        Name:<input type="text" value="name" name='name'>
                        Email:<input type="email" value="email" name='email'>
                        Phone:<input type= "tel" value="phone(opt)" name='phone'>
                        <button id="sub">Submit</button>
</form>

使用 mysqli_* 而不是 mysql_* ,因为它已被弃用。您也可以使用 PDO。更多关于mysqli_*

在将数据插入数据库之前过滤数据。所以,userinfo.php 看起来像

include_once('db.php');

$name = mysqli_real_escape_string($db, $_POST['name']);
$email = mysqli_real_escape_string($db,$_POST['email']);
$phone = mysqli_real_escape_string($db,$_POST['phone']);

if (mysql_query("INSERT INTO `users` (`name`, `email`, `phone`) VALUES ('".$name."','".$email."','".$phone."')"))
echo"successfully inserted";
else
echo "failed";
于 2013-08-30T01:56:50.307 回答