我正在做类似发布工具的操作,并且可以很好地处理插入数据库中的数据。我决定添加字段 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));
}
}
?>
答案 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));