数据未使用PHP插入数据库

时间:2017-01-25 16:14:43

标签: php mysql pdo

编辑纠正线echo "Error: " + $e->getMessage;

我正在尝试创建一个简单的示例,只是为了从表单添加数据并使用PHP将数据上传到数据库。

HTML code:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Rich Text</title>
    <script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
    <script>tinymce.init({
        selector:'textarea',
        plugins: "link"
    });</script>
</head>
<body>
    <form class="formulario" action="index.php" method="post">
        <p>Inserta título</p>
        <textarea name="texto" rows="8" cols="80"></textarea>
        <input type="submit" name="enviar" value="enviar">
    </form>
</body>
</html>

和PHP代码:

<?php

try {
$conexion = new PDO('mysql:host;localhost=Blog', 'root', '' );
} catch (Exception $e) {
echo "Error: " . $e->getMessage;
}

if (isset($_POST['enviar']) and $conexion) {
   $texto = $_POST['texto'];
   echo $texto;

   $statement = $conexion->prepare("INSERT INTO art (ID, articulo) VALUES     (NULL, $texto)");
   $statement->execute();
}

require 'index.view.php';

?>

是否需要指定ID列,因为它是自动增量?

2 个答案:

答案 0 :(得分:4)

改变这个:

$statement = $conexion->prepare("INSERT INTO art (ID, articulo) VALUES (NULL, $texto)");

对此:

$statement = $conexion->prepare("INSERT INTO art (articulo) VALUES (:texto)"); 
$statement->bindParam(':texto', $texto, PDO::PARAM_STR);

您无需指定不会更改的列,例如自动增量列(ID)。这个专栏将照顾自己。

使用BindParam是将数据 安全 插入数据库的正确方法之一。

答案 1 :(得分:0)

请参阅How do I get PHP errors to display?

您可以使用+符号连接php中的字符串。连接

echo "Error: " . $e->getMessage;

要连接数据库,您应该使用

$conexion = new PDO("mysql:host=localhost;dbname=Blog", root, '');

如果您将表配置为自动增量,则不需要插入ID。