你如何使用php插入mysql数据库?

时间:2016-11-10 04:29:01

标签: php mysql forms post

所以我无法将数据连接或插入数据库。我正在使用表格来收集我需要的信息。然后我尝试插入我的数据库。我不知道问题是什么,但我认为我的连接有问题。我正在使用两个文件来尝试完成此任务。

addQuite.html文件

<!DOCTYPE html>
<html>
<head>
    <title>AddQuote</title>
    <link href="styles.css" type="text/css" rel="stylesheet" />
</head>

 <body>

<h2> Add a Quote <h2>

    <form action="index.php" method="get">
        <div>
            Quote:<br>

            <textarea  rows="6" cols="60" name="quote" id="quote">

            </textarea>

            <br>

            Author: <input type="text" name="author" id="author"/> <br>

            <input class = "input2" type="submit" value="Save Quotation"/>
        </div>
    </form>
  </body>


   </html>

这是我的index.php文件,我正在尝试连接并插入我的数据库

  <!DOCTYPE html>
  <html>
    <head>
    <title>Quotes</title>
    <link href="styles.css" type="text/css" rel="stylesheet" />
    </head>

  <body>


<h1> Quotes </h1>

<form action="addQuote.html">
<input class="input1" type="submit" value="Add Quote"/>
</form>

<?php
//connet to server
$db = new PDO("mysql:host=server;dbname=quotes", "root" , "");

//check connections
if($db===false){
    die("ERROR: Could not connect. ");
}

//get name and quote
$name = $_GET['author'];
$quote = $_GET['quote'];

//attemp insert query execution
$sql = "INSERT INTO quotations (name, quote, rating ) VALUES 
('$name', '$quote', 0)";

?>

</body>


</html>

3 个答案:

答案 0 :(得分:0)

查看以下示例

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

答案 1 :(得分:0)

您的查询永远不会被执行,添加&#34; $ DB-&GT; EXEC($ SQL); &#34;你的代码。

<?php
//connet to server
$db = new PDO("mysql:host=server;dbname=quotes", "root" , "");

//check connections
if($db===false){
    die("ERROR: Could not connect. ");
}

//get name and quote
$name = $_GET['author'];
$quote = $_GET['quote'];

//attemp insert query execution
$sql = "INSERT INTO quotations (name, quote, rating ) VALUES 
('$name', '$quote', 0)";
$db->exec($sql);
?>

答案 2 :(得分:0)

要将数据通过PDO插入MySQL,您需要使用准备好的语句。 exec() 不应该用于插入数据。需要对SQL查询进行参数化,并分别传递数据。

<?php

//connet to server
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
];
$db = new PDO("mysql:host=server;dbname=quotes;charset=utf8mb4", "root", "", $options);

//attempt insert query execution
$db->prepare('INSERT INTO quotations(name, quote, rating ) VALUES(?,?,0)')
    ->execute([
        $_GET['author'], 
        $_GET['quote']
    ]);

?>

您还应该在PDO中使用PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION启用异常,使用utf8mb4字符集,并且在PHP中不要在没有密码的情况下使用root

相关问题