我正在从事一个学校项目,该项目涉及具有数据库集成的网站。目前正在努力通过它向网站添加新内容(文本,标题,图像)。我已经可以通过网站将新用户添加到数据库中,但是由于某些原因,相同的代码和逻辑不适用于该内容。
我注意到打印带有回显的 $ stmt 不会打印任何内容。
<?php
include "../conn.php";
$sql = "INSERT INTO `contenido` (`id_contenido`, `tipo_contenido`, `id_seccion`, `orden_contenido`, `largo_contenido`, 'corto_contenido', 'extra_contenido') VALUES (NULL, '".$_POST["tipo"]."', '".$_GET['id']."','".$_POST["orden"]."','".$_POST["largo"]."','".$_POST["corto"]."','".$_POST["extra"]."')";
$stmt = $conn->prepare($sql);
if ($stmt = $conn->prepare($sql))
{
//echo "It worked";
$stmt->execute();
$last_id = $conn->insert_id;
header("Location: editarContenidos.php?id=".$_GET['id']);
}
?>
预期结果:内容信息被上载到数据库,并且用户被重定向到“编辑内容”页面(editarContenidos.php)
实际结果:白色屏幕,无错误。由于if条件为false,因此永远不会重定向您,并且内容也不会上传到数据库。
注意:插入用户.php使用相同的逻辑和语法,我对php的经验不足,无法理解我在做什么。
答案 0 :(得分:0)
我假设id_contenido是一个auto_increment字段,并且我不确定反引号是否可以使用多种语言。我建议添加一些错误处理PDO::errorInfo 并将SQL代码更改为:
libstdc++
SQL代码中有一个$sql = "INSERT INTO contenido (tipo_contenido, id_seccion, orden_contenido, largo_contenido, corto_contenido, extra_contenido) VALUES ('".$_POST["tipo"]."', '".$_GET['id']."','".$_POST["orden"]."','".$_POST["largo"]."','".$_POST["corto"]."','".$_POST["extra"]."')";
,我无法确定这是否是故意的。
我建议使用参数,并建议使用$_GET['id']
进行调试。
尝试以下代码:
print_r($_POST);
答案 1 :(得分:0)
我发现了问题所在。引号没有正确使用。 以下代码有效:
<?php
include "../conn.php";
$sectionid = $_GET['id'];
$sql = "INSERT INTO contenido (id_contenido, tipo_contenido, id_seccion, orden_contenido, largo_contenido, corto_contenido, extra_contenido) VALUES (NULL, '".$_POST["tipo"]."', '".$sectionid."','".$_POST["orden"]."','".$_POST["largo"]."','".$_POST["corto"]."','".$_POST["extra"]."')";
$stmt = $conn->prepare($sql);
//echo $sql;
if ($stmt = $conn->prepare($sql))
{
$stmt->execute();
$last_id = $conn->insert_id;
header("Location: editarContenidos.php?id=".$sectionid);
}
?>