未使用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代码,但我一直不工作。