我正在尝试从我的表单中捕获数据并将其输入数据库,但是当我尝试将数据输入到列中时,我只获取了uid,其余列都是空的。
以下是一些代码:
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 :(得分:0)
修改强>
随着给定的信息,它更多的猜测然后调试。但我敢打赌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;
答案 1 :(得分:0)
无关的提示:确保使用addslashes
转义要插入的变量,以防止大多数注入攻击。
实际上......这可能非常相关。引号和其他未转义的字符可能会导致字符串“断开”并导致MySQL语法错误。
答案 2 :(得分: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注射有多熟悉,但是通过你的设置,黑客很容易查看你的整个数据库!而且我相信你不希望这种情况发生:)我是对的吗?
度过美好的一天!!