prepare($ sql)函数不适用于一个脚本

时间:2019-01-28 02:01:12

标签: php mysql sql prepared-statement

我正在从事一个学校项目,该项目涉及具有数据库集成的网站。目前正在努力通过它向网站添加新内容(文本,标题,图像)。我已经可以通过网站将新用户添加到数据库中,但是由于某些原因,相同的代码和逻辑不适用于该内容。

我注意到打印带有回显的 $ 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的经验不足,无法理解我在做什么。

2 个答案:

答案 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);
    }

?>