2010-08-16 94 views
1

我想从我的窗体捕获数据并将其抽入数据库,但是当我尝试向列中输入数据时,我只能获取uid,而其余列是空的。mySQL查询创建空列

下面是一些代码:

mysql_query("INSERT INTO personal_information (uid, name, surname, email, cell) 
VALUES ('".$uid."', '".$name."', '".$surname."', '".$email."', '".$cell."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO consumer_related_info (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO family_scenario (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO lifestyle_activities (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO occupational_information (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO sport_activities (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO vehicle_details (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

什么可能我是做错了什么?

+0

您使用的所有变量是否都包含值?如果在构建SQL语句之前立即回显其内容,结果如何? INSERT语句是否产生错误?此外,使用[预准备语句](http://uk3.php.net/pdo.prepared-statements)会更好,可以通过[PDO](http://php.net/manual/en/book .pdo.php),或者直接使用[mysqli](http://php.net/manual/en/book.mysqli.php)。 – Mike 2010-08-16 12:26:38

+1

'register_globals'的值是什么(请参阅php.ini或'phpinfo()') – teemitzitrone 2010-08-18 09:23:21

回答

0

用php发送数据? 然后读取http://php.net/manual/en/security.globals.phphttp://www.php.net/manual/en/language.variables.predefined.php

编辑 在给定的信息,它更多的猜测,然后调试。但我敢打赌,register_globals是这里的问题。

怎么办?简单使用superglobals

// assumed the form method is post 
$name = mysql_real_escape_string(trim($_POST['name'])); 
// and so on 

如果这没有帮助:使用虚拟值填写表单,转储你请求的数据(和张贴在这里)

echo '<pre>' 
    . print_r($_REQUEST, true) 
    . '</pre>'; 
exit; 
0

无关提示:请确保变量你插入使用addslashes转义以防止大多数注入攻击。

其实......这可能是非常相关的。引号和其他非转义字符可能导致字符串“突破”并导致MySQL语法错误。

0

试试这个,看看你的变量分配有值,它是什么

$values = array($uid, $name, $surname, $email, $cell); 
print_r($values); 

检查输出。

之后说。我会执行我这样的查询

$query = sprintf("INSERT INTO personal_information (uid,name,surname,email,cell) VALUES ('%s', '%s', '%s', '%s', '%s')", 
mysql_real_escape_string($uid), 
mysql_real_escape_string($name), 
mysql_real_escape_string($surname), 
mysql_real_escape_string($email), 
mysql_real_escape_string($cell)); 

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

通过转义所有输入,你是安全的对mysql_injections(我不知道你是否完全安全)。这个非常重要!!我不知道你对mysql注入有多熟悉,但是对于你的设置,黑客很容易查看你的整个数据库!我相信你不希望发生这种情况:)我是对的吗?

祝您有美好的一天!

+0

我从窗体获取所有数据,但由于某种原因它不会进入数据库,它只显示空白列! – Odyss3us 2010-08-16 13:39:57

+0

你可以发布帖子值的样本吗?你有没有试图逃避投入? – 2010-08-16 14:40:49