未使用PHP插入数据库的数据

未使用PHP插入数据库的数据,php,mysql,pdo,Php,Mysql,Pdo,编辑以更正行echo”错误:“+$e->getMessage 我试图制作一个简单的示例,从表单中添加数据,并使用PHP将数据上传到数据库 HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Rich Text</title> <script src="//cdn.tinymce.com/4/tinymce.min

编辑以更正行
echo”错误:“+$e->getMessage

我试图制作一个简单的示例,从表单中添加数据,并使用PHP将数据上传到数据库

HTML代码:

<!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>

富文本
tinymce.init({
选择器:'textarea',
插件:“链接”
});
蒂图罗酒店

和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列,因为它是自动递增的

改变这一点:

$statement=$conexion->prepare(“插入艺术(ID,articulo)值(NULL,$texto)”

为此:

$statement = $conexion->prepare("INSERT INTO art (articulo) VALUES (:texto)"); 
$statement->bindParam(':texto', $texto, PDO::PARAM_STR);
您不需要指定不更改的列,例如自动递增列(
ID
)。这篇专栏会照顾好自己的

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

在php中不能使用+符号连接字符串,可以使用。连接

echo "Error: " . $e->getMessage;
要连接到数据库,应使用

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

如果将表配置为自动递增,则无需插入ID。

否,只需插入必要的列。您可能希望在页面中打开错误报告,以查看如果错误报告不起作用,会出现什么问题。您对查询非常开放,应该真正使用而不是连接查询。特别是因为您根本没有转义数据。这不是您使用准备语句的方式。您的脚本是使用预先准备好的语句进行设置的,但是您涉及SQL和
$texto
var的行正在取消所有良好的承诺。您的变量
$texto
在查询中不带引号。这是一个语法错误。请确保按原样更正它。但更重要的是,您应该使用命名参数。有关如何正确执行此操作的示例,请参见,这将解决此问题。但第一个问题可能是dsn,它看起来也很糟糕。
mysql:host;localhost=Blog
部分,即。应注意,
BindParam
不是唯一正确的方法;)如果您有进一步的问题,您应该使用它来查找和确定您的问题problems@JetLagFox你为什么使用“$\u POST['enviar']”?我认为“$_POST['texto']”是这里的正确方式…@DiegoMedeiros是检查是否发送了内容(提交按钮)。呃,你在这里是错误的。您可以愉快地将
NULL
传递到MySQLYou中的一个自动递增字段。您是对的,我编辑了代码,因为在我学习java时这是一个错误……我的错。我已经更改了conexion代码,但我一直不工作。