在表格上添加新列后,我无法再插入数据

时间:2019-10-21 20:42:29

标签: php html mysql

我正在做类似发布工具的操作,并且可以很好地处理插入数据库中的数据。我决定添加字段 link ,然后出现此错误:

可恢复的致命错误:mysqli类的对象无法在C:\ xampp \ htdocs \ Pequeno Davi 2Versãocompleta \ Painel de postagens \ armazenar_postagens.php中转换为字符串

我的代码:

<body>
        <div class="col-md-4"></div>
        <div class="col-md-4">
            <div id="well well-sm">
                <div id="panel">
                    <form action="armazenar_postagens.php" method="POST" enctype="multipart/form-data">
                        <h4>Escolha uma imagem de capa</h4>
                        <p><input type="file" name="image" id="image" class="form form-control"/></p>
                        <h4>Título da publicação</h4>
                        <p><input type="text" name="titulo" id="titulo" placeholder="Insira um título" class="form form-control"/></p>
                        <h4>Texto da publicação</h4>
                        <p><textarea name="descricao" id="descricao" placeholder="Texto da publicação" class="form form-control"></textarea></p>
                        <h4>Link</h4>
                        <p><input type="text" name="link" id="link" placeholder="Insira o endereço de um link" class="form form-control"/></p>
                        <h4>Adicione uma imagem para o corpo da publicação</h4>
                        <p><input type="file" name="image_imagem" id="image_imagem" class="form form-control"/></p>
                        <button type="submit" class="btn btn-primary form-control">Publicar</button>
                    </form>
                    <!--<?php
                        //if($campo_vazio == 1){
                            //echo '<font color="#FF0000">Você não preencheu algum dos campos!</font>';
                        //}
                    ?> -->
                </div>
            </div>
        </div>
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>

        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

    </body>
<?php

    require_once('db.class.php');

    $titulo = $_POST['titulo'];
    $descricao = $_POST['descricao'];
    $link = $_POST['link'];

    date_default_timezone_set('America/Sao_Paulo');
    $data = date("d/m/Y");
    $hora = date("H:i");

    $uploaddir = 'imagens/uploads/';
    $uploadfile = $uploaddir.basename($_FILES['image']['name']);
    $imagename = $uploaddir.basename($_FILES['image']['name']);

    $objDb = new db();
    $link = $objDb-> conecta_mysql ();


    if(move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)){
        echo "Imagem enviada com sucesso";
            $sql = "INSERT INTO postagens(titulo, descricao, data, hora, imagem_capa, link) VALUES ('$titulo', '$descricao', '$data', '$hora', '$imagename', '$link')";
            echo'<img src="'.$imagename.'"/>' ;
        if(mysqli_query($link, $sql)){
            if(empty($titulo) || empty($descricao)){
                header('Location: Ferramenta_postagem.php?campo_vazio=1');
            }else{
                header('Location: Ferramenta_postagem.php');
            }

        } else {
            echo 'Erro ao registrar postagem!';
            echo("Error description: " . mysqli_error($link));
        }
    }

?>

2 个答案:

答案 0 :(得分:1)

此行会导致问题

if(mysqli_query($link, $sql)){

您在一开始就定义了

$link = $_POST['link'];

在中间 您使用了以下代码

 $link = $objDb-> conecta_mysql ();

使用相同易记名称

的地方

但是mysqli_query($ link需要一个mysql连接,而不是一开始就定义的$ Link

将$ link与$ conn交换并在

中使用
$conn = $objDb-> conecta_mysql ();
----
mysqli_query($conn,sql

并且由于 sql注入

,请仔细阅读准备好的语句

答案 1 :(得分:0)

更改数据库连接变量$ link。

您在POST方法中使用了此变量($ link)进行数据输入,并且还使用了数据库连接变量

$link = $objDb-> conecta_mysql ();

像这样更改此变量:

$connect = $objDb-> conecta_mysql ();

如果您更改此变量,则还应该更改这些行

if(mysqli_query($connect, $sql)){

echo("Error description: " . mysqli_error($connect));