我正在尝试使用
上传图片$userimage = sql_real_escape($_FILES['image']['name'])
表单还有用户名和密码字段,当我们进入插入VALUES部分时,它只是在保存时没有保存。 认为这会弄乱页面,因为它会出现错误500
if(isset($_POST['btn-signup']))
{
$uname = mysql_real_escape_string($_POST['uname']);
$email = mysql_real_escape_string($_POST['email']);
$upass = md5(mysql_real_escape_string($_POST['pass']));
$image= mysql_real_escape_string($_FILES['image']['name']);
$name= mysql_real_escape_string(file_get_contents($_FILES['image']['name']));
if(sub(substr($imageType,0,5) == "image")
{
mysql_query("INSERT INTO users(image,name) VALUES(,'$image','$name')");
}
if(mysql_query("INSERT INTO users(username,email,password) VALUES('$uname','$email','$upass',)"))
{
?>
<script>alert('successfully registered ');</script>
<?php
}
else
{
?>
<script>alert('error while registering you...');</script>
<?php
}
}
?>
当它保存为Blob时,文件大小很小,如4或7kiB,对于图像甚至2mb大。
<form method="post" entype="multipart/form-data">
<table align="center" width="30%" border="0">
<tr>
<td><input type="text" name="uname" placeholder="User Name" required /></td>
</tr>
<tr>
<td><input type="email" name="email" placeholder="Your Email" required /></td>
</tr>
<tr>
<td><input type="password" name="pass" placeholder="Your Password" required /></td>
</tr>
<td><input type="file" name="image" placeholder="upload here" required /></td>
</tr>
<tr>
<td><button type="submit" name="btn-signup">Sign Me Up</button></td>
</tr>
<tr>
<td><a href="index.php">Sign In Here</a></td>
</tr>
</table>
</form>
答案 0 :(得分:1)
将图像保存在数据库中并不是一个好主意。 更好的是将图像上传到某个目录并将相同的文件名插入数据库。
答案 1 :(得分:0)
您提供的信息不足以说出任何明智的信息。
&#34;它只是不能保存正确&#34;,这是什么意思?脚本是否实际上将记录插入到数据库中,尽管是不可用的,或者(插入)查询没有执行任何操作而是执行?或者脚本甚至没有超过isset($ _ POST)条件?
答案 2 :(得分:0)
我过去常常这样做,但我发现db太快了。但是,根据假设,您可能没有将图像插入SESSION
idSession
MaxGuest
类型。
但是正如上面的评论,将图像存储在db中并不是一个好主意。最好的选择是拥有一个可写文件夹并在php示例中使用blob
并在数据库中仅存储名称作为字符串。
答案 3 :(得分:0)
好的,你有正确的想法..但你应该先做以下检查:
使用move_uploaded_file上传图片以查看文件是否已正确上传
确保您的插入语句正常运行
IF 以上两项工作正常,请执行以下操作:
if( isset( $_FILES['image']['tmp_name'] ) ) {
// $filename == whatever you want to name you image. Example : photo1.jpg
// be sure to save you image name with the extension
if ( ! @move_uploaded_file( $_FILES['image']['tmp_name'], '/wamp/www/my_website/images/' . $filename ))
{
return FALSE OR return 'error message';
}
// if passed then here is where you put you sql statement
if( mysql_query( "INSERT INTO users(username,email,password,image) VALUES('$uname','$email','$upass','$filename')"))
return true;
return FALSE OR return 'error message';
}
else
return 'Please select a file'
如果文件已上传并且未存储SQL,请不要担心,这不应该发生,因为您应该确保满足上述2条件,每当重新上传时,一旦图像具有相同的名称,它将会覆盖它。
另一件事是确保图像不要具有相同的名称。