2009-04-15 185 views
-5
<?php 
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
{ 
$dbhost = 'localhost'; 
$dbuser = 'zuk1_boo'; 
$dbpass = 'lols'; 
$dbname = 'zuk1_boo'; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 

$name = $_POST['name']; 
$iq = $_POST['iq']; 

$nuname = str_replace(" ", "-", $name); 
$nuname = $nuname.".gif"; 
$path = "img/$nuname"; 

move_uploaded_file($_FILES['userfile']['tmp_name'],$path); 

$query = "INSERT INTO celebs (celeb,path1,iqq) VALUES ('$name','$path','$iq')"; 

mysql_query($query) or die('q fail'); 

mysql_close($conn); 

echo "<br>File $fileName uploaded<br>"; 
} 
?> 

<form method="post" enctype="multipart/form-data"> 
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box"> 
<tr> 
<tr><td><input name="name" type="text" value="name"></td></tr> 
<tr><td><input name="iq" type="text" value="iq"></td></tr> 
<td width="246"> 
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"> 
<input name="userfile" type="file" id="userfile"> 
</td> 
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td> 
</tr> 
</table> 
</form> 

不知道有一个自动增量的ID行,但即使我将它添加到查询它仍然无法正常工作。PHP查询失败

无论我用这个查询做什么,它都不会工作,我已经三重检查了sql的细节,并且他们很好,即使它看起来连接都很好。我在查询中使用了字段名称,它们应该没问题,但它不起作用! 5美元贝宝给任何人可以帮助我,我真的很沮丧,这是不真实的。

+0

什么是错误? – 2009-04-15 15:34:43

+0

为什么所有的downvotes? – 2009-11-10 00:11:58

回答

14
mysql_query($query) or die('q fail'); 

mysql_query($query) or die(mysql_error()); 

更换这一点,并告诉我们你得到了什么。

+0

我是一个绝对的d * ck头,这就是你得到的。数据库未选中。有时候我很沮丧,因为我很想念这个明显的问题:) – zuk1 2009-04-15 15:41:42

5

那么,现在你已经解决了实际问题,我认为这是很好的指出,你有巨大的空洞SQL injection洞。

固定将被切换到使用PDOMySQLi功能和使用参数化查询的理想方式,但最快的解决将是改变这些行:

$name = $_POST['name']; 
$iq = $_POST['iq']; 

$name = mysql_real_escape_string($_POST['name']); 
$iq = mysql_real_escape_string($_POST['iq']); 

你现在的代码将会非常不安全,无法公开。