如何使用带有HTML表单的PHP在MySQL中插入记录

如何使用带有HTML表单的PHP在MySQL中插入记录,php,html,mysql,forms,xampp,Php,Html,Mysql,Forms,Xampp,我已经用html创建了一个表单,我希望表单中输入的数据被发送到XAMMP中的mysql数据库。我创建了数据库、表和connectivity.php文件,用于管理与数据库的连接和数据条目,但在尝试时出现以下错误: “致命错误:未捕获错误:调用C:\xampp\htdocs\example\connectivity.php中未定义的函数mysql_connect():8堆栈跟踪:#0{main}在C:\xampp\htdocs\example\connectivity.php的第8行抛出” 我发布了

我已经用html创建了一个表单,我希望表单中输入的数据被发送到XAMMP中的mysql数据库。我创建了数据库、表和connectivity.php文件,用于管理与数据库的连接和数据条目,但在尝试时出现以下错误:

“致命错误:未捕获错误:调用C:\xampp\htdocs\example\connectivity.php中未定义的函数mysql_connect():8堆栈跟踪:#0{main}在C:\xampp\htdocs\example\connectivity.php的第8行抛出”

我发布了我写的所有代码。有人知道我错在哪里吗

这是index.html的表单

    <!DOCTYPE HTML>
<html>

<head>
    <title>Contact Us</title>
    <link rel="stylesheet" type="text/css" href="style.css">

    <?php include("connectivity.php"); ?>

</head>

<body>
    <div id="contact">
        <h3>Contact Us For Any Query</h3>
        <form method="POST" action="connectivity.php">
            Name
            <br>
            <input type="text" name="name">
            <br> Email
            <br>
            <input type="text" name="email">
            <br> Message
            <br>
            <textarea rows="10" cols="50" maxlength="100" name="message"></textarea>
            <br>
            <input type="submit" value="Send Message">
        </form>
    </div>
</body>

</html>
最后是connectivity.php文件:

<?php
//connecting to the database
define('DB_HOST', 'localhost');
define('DB_NAME', 'practice');
define('DB_USER','root');
define('DB_PASSWORD','');

$con=mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());
//inserting Record to the database
$name = $_POST['name'];
$email = $_POST['email'];
$message =  $_POST['message'];

$query = "INSERT INTO contact(contactName,contactEmail,message)VALUES('$name','$email','$message')";
$result = mysql_query($query);
if($result)
    {
        echo "Successfully updated database";
    }
    else
    {
     die('Error: '.mysql_error($con));
    }
    mysql_close($con);
?>

首先,您会看到您的phpinfo:

<?php
    phpinfo();
?>

然后在这里看到,
php\u mysql
是启用还是禁用的

如果没有
php\u mysql
,请更改
php.ini
文件:
取消注释
extension=php_mysql.dll

如果您使用的是最新版本的
xampp
,则必须使用PDO或MySQLi

你必须把密码改成这样

您的连接页面

<?php


    $db = new PDO('mysql:host=localhost;dbname=practice;charset=utf8', 
                  'root', 
                  '',
                  array(PDO::ATTR_EMULATE_PREPARES => false,
                  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));


?>
<?php

if (isset($_POST['name'])) {

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



    $stmt = $db->prepare("INSERT INTO `contact` (contactName,contactEmail,message)
    VALUES (:name, :email, :message)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':message', $message);

    $stmt->execute();

    echo 'added';

}

?>
<!DOCTYPE HTML>
<html>

<head>
<title>Contact Us</title>
<link rel="stylesheet" type="text/css" href="style.css">

</head>

<body>
    <div id="contact">
        <h3>Contact Us For Any Query</h3>
        <form method="POST" action="connectivity.php">
            Name
            <br>
            <input type="text" name="name">
            <br> Email
            <br>
            <input type="text" name="email">
            <br> Message
            <br>
            <textarea rows="10" cols="50" maxlength="100" name="message"></textarea>
            <br>
            <input type="submit" value="Send Message">
        </form>
    </div>
</body>

</html>

您的主页

<?php


    $db = new PDO('mysql:host=localhost;dbname=practice;charset=utf8', 
                  'root', 
                  '',
                  array(PDO::ATTR_EMULATE_PREPARES => false,
                  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));


?>
<?php

if (isset($_POST['name'])) {

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



    $stmt = $db->prepare("INSERT INTO `contact` (contactName,contactEmail,message)
    VALUES (:name, :email, :message)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':message', $message);

    $stmt->execute();

    echo 'added';

}

?>
<!DOCTYPE HTML>
<html>

<head>
<title>Contact Us</title>
<link rel="stylesheet" type="text/css" href="style.css">

</head>

<body>
    <div id="contact">
        <h3>Contact Us For Any Query</h3>
        <form method="POST" action="connectivity.php">
            Name
            <br>
            <input type="text" name="name">
            <br> Email
            <br>
            <input type="text" name="email">
            <br> Message
            <br>
            <textarea rows="10" cols="50" maxlength="100" name="message"></textarea>
            <br>
            <input type="submit" value="Send Message">
        </form>
    </div>
</body>

</html>

联系我们
如有任何疑问,请联系我们
名称


电子邮件

信息


希望这有助于

mysql
函数不安全且不受保护,请使用
mysqli
PDO
insead您可能正在运行新版本的PHP,其中mysql_uu函数已被删除。这里已经回答了问题:您必须在php中启用
php\u mysql
模块。我试图使用您的代码,但系统给了我以下错误:
致命错误:未捕获PDOException:SQLSTATE[HY000][2019]未知字符集,位于C:\xampp\htdocs\example\connectivity.php:7堆栈跟踪:#0 C:\xampp\htdocs\example\connectivity.php(7):PDO->uu构造('mysql:host=loca…','root','',Array)#1{main}在第7行的C:\xampp\htdocs\example\connectivity.php中抛出
我验证了在
php.ini
文件中字符串
扩展名=php_PDO.dll
未注释。@Riccardo我编辑了这部分,它对我有效
$stmt=$db>(“插入到…
sory的小错误。@Riccardo我还将这部分
UTF-8更改为utf8