我在这里试图学习一些PHP但我现在遇到一些问题我的代码现在我正试图解决“getimagesize():文件名不能为空”但还有很多其他像:/ - 未定义的变量:date / - 未定义的变量:imgData / 是的,我已经尝试过其他代码,仍然有同样的问题/
所以这是我的代码。
<?php
$link = mysqli_connect("blah", "blah", "blah", "blah");
if($link === false){
die("ERRRO: Não foi possivel a conexão com a base de dados. " . mysqli_connect_error());
}
if(!empty($_FILES['userImage']['tmp_name'])
&& file_exists($_FILES['userImage']['tmp_name'])) {
$imgData= addslashes(file_get_contents($_FILES['userImage']['tmp_name']));
}
$imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
$portal = mysqli_real_escape_string($link, $_POST['field1']);
$datacri = mysqli_real_escape_string($link, $_POST['field2']);
$datacri = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
$datapub = mysqli_real_escape_string($link, $_POST['field3']);
$datapub = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
$titulo = mysqli_real_escape_string($link, $_POST['field4']);
$keyword = mysqli_real_escape_string($link, $_POST['field5']);
$hashtags = mysqli_real_escape_string($link, $_POST['field6']);
$pedido = mysqli_real_escape_string($link, $_POST['field7']);
$autor = mysqli_real_escape_string($link, $_POST['field8']);
if (!$portal) {
echo '<script type="text/javascript"> alert("Preencha todos os campos "); </script>';
mysqli_close($link);
}
$sql = "INSERT INTO pedidos (p_portal, p_datacri, p_datapub, p_titulo, p_titulo, p_keywords, p_hashtags, p_imageType, p_imageData, p_pedido, p_autor)
VALUES('$portal', '$datacri', '$datapub', '$titulo', '$keyword', '$hashtags', '{$imageProperties['mime']}', '{$imgData}', '$pedido', '$autor')";
if(mysqli_query($link, $sql)){
echo '<script type="text/javascript"> alert("Portal Criado"); </script>';
} else{
echo "ERRO: Não foi possivel executar o comando $sql. " . mysqli_error($link);
}
?>
我的html文件:
<form action="php\pedidos\p_ins.php" enctype="multipart/form-data" method="post">
<link rel="stylesheet" href="css\pedidos.css">
<fieldset>
<legend><span class="number">1</span> Criar Pedido</legend>
<label for="portal">Portal</label
<?php
$link = mysqli_connect("blah", "blah", "blah", "blah");
if($link === false){
die("ERRRO: Não foi possivel a conexão com a base de dados. " . mysqli_connect_error());}
$result = $link->query("select po_id, po_nome from portais");
echo "<html>";
echo "<body>";
echo "<select name='field1' name='po_id'>";
echo "<option value=''>----Selecione um Portal----</option>";
while ($row = $result->fetch_assoc()) {
unset($id, $name);
$id = $row['po_id'];
$name = $row['po_nome'];
echo '<option value="'.$id.'">'.$name.'</option>';
} echo "</select>";
echo "</body>";
echo "</html>";?>
<label>Data de Criação</label>
<input type="date" name="field2" placeholder="Data de publicacao do Post">
<label>Data de Publicação</label>
<input type="date" name="field3" placeholder="Data de publicacao do Post">
<label>Titulo</label>
<input type="text" name="field4" placeholder="Insira aqui o Titulo">
<label>Keywords</label>
<input type="text" name="field5" placeholder="Insira aqui as Keywords">
<label>Hashtags</label>
<input type="text" name="field6" placeholder="Insira aqui as Hashtags">
<label>Imagem</label>
<p> </p>
<input type="file" name="userImage" accept="image/*" class="inputFile"> <p> </p>
<label>Pedido</label>
<textarea type="text" name="field7" placeholder="Insira aqui o Pedido"></textarea>
<label for="autores">Autor</label>
<?php
$result = $link->query("SELECT *FROM autores");
echo "<html>";
echo "<body>";
echo "<select name='field8' name='a_id'>";
echo "<option value=''>----Selecione um autor----</option>";
while ($row = $result->fetch_assoc()) {
unset($id, $name)
; $id = $row['a_id'];
$name = $row['a_nome'];
echo '<option value="'.$id.'">'.$name.'</option>';
} echo "</select>";
echo "</body>";
echo "</html>";?>
<input type="submit" value="Enviar" />
<div id='footer'>
</div>
</form>
感谢。
答案 0 :(得分:1)
确保您的input type="file"
位于具有enctype="multipart/form-data"
的表单中,或者不会将文件发送到您的PHP脚本,$_FILES['userImage']['tmp_name']
将为空
<form method="post" enctype="multipart/form-data" action="yourphpfile.php">
<label>Data de Criação</label>
<input type="date" name="field2" placeholder="Data de publicacao do Post">
<label>Data de Publicação</label>
<input type="date" name="field3" placeholder="Data de publicacao do Post">
<label>Titulo</label>
<input type="text" name="field4" placeholder="Insira aqui o Titulo">
<label>Keywords</label>
<input type="text" name="field5" placeholder="Insira aqui as Keywords">
<label>Hashtags</label>
<input type="text" name="field6" placeholder="Insira aqui as Hashtags">
<label>Imagem</label>
<p> </p>
<input type="file" name="userImage" class="inputFile"> <p> </p>
<label>Pedido</label>
<textarea type="text" name="field7" placeholder="Insira aqui o Pedido"></textarea>
<label for="autores">Autor</label>
</form>
至于你的PHP代码,我建议将有关插入的所有块放到if
块内的数据库中。此外,您还有一些修复错误:
if(!empty($_FILES['userImage']['tmp_name'])
&& file_exists($_FILES['userImage']['tmp_name'])) {
$imgData= mysqli_real_escape_string($link, file_get_contents($_FILES['userImage']['tmp_name']));
$imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
$portal = mysqli_real_escape_string($link, $_POST['field1']);
$date = mysqli_real_escape_string($link, $_POST['field2']);
$datacri = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
$date = mysqli_real_escape_string($link, $_POST['field3']);
$datapub = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
$titulo = mysqli_real_escape_string($link, $_POST['field4']);
$keyword = mysqli_real_escape_string($link, $_POST['field5']);
$hashtags = mysqli_real_escape_string($link, $_POST['field6']);
$pedido = mysqli_real_escape_string($link, $_POST['field7']);
$autor = mysqli_real_escape_string($link, $_POST['field8']);
if (!$portal) {
echo '<script type="text/javascript"> alert("Preencha todos os campos "); </script>';
mysqli_close($link);
}
$sql = "INSERT INTO pedidos (p_portal, p_datacri, p_datapub, p_titulo, p_keywords, p_hashtags, p_imageType, p_imageData, p_pedido, p_autor)
VALUES('$portal', '$datacri', '$datapub', '$titulo', '$keyword', '$hashtags', '{$imageProperties['mime']}', '{$imgData}', '$pedido', '$autor')";
if(mysqli_query($link, $sql)) {
echo '<script type="text/javascript"> alert("Portal Criado"); </script>';
} else{
echo "ERRO: Não foi possivel executar o comando $sql. " . mysqli_error($link);
}
} else {
echo "ERROR: couldn't get image Data";
}
?>
...