(PHP / MYSQL)Insert Into在插入大值,没有超时或错误时不起作用

时间:2014-07-01 17:22:05

标签: php mysql actionscript-3 flash insert-into

我正在使用闪存进行AS3程序;在程序中,您输入您的用户名和密码,并选择一副卡进行注册;单击注册按钮时,flash会从卡片组中发送用户名,密码和长字符串,长度超过1 MB(但目前只有1 KB长)。

为此,我使用INSERT INTO方法。这是我的代码:

<?php 

/*
connect to database
*/

include "connect.php";

/*
create POST vars to receive data from flash
*/

$username = $_POST['username'];
$password = $_POST['password'];

$sdTrunkest = $_POST['sdTrunk'];


$sql = "INSERT INTO users (username, password, Trunk) VALUES ('$username', '$password', '$sdTrunkest')";
mysql_query($sql); 
exit("result_message=Success");
?>

当我运行此代码而$ sdTrunkest大约可能是100字节时,它运行正常并注册。但是当我尝试在$ sdTrunkest大约1 KB时运行它时,它只是“假装它从未见过”INSERT INTO行。它没有给我一个超时错误,即便如此我尝试使用ini_set('max_execution_time', 0);,但它没有改变。事实上,它根本不会给我任何错误。 INSERT INTO无法处理长文本吗?有没有办法解决这个问题?

提前谢谢^^

2 个答案:

答案 0 :(得分:1)

我发现了问题。它与mysql_connect错误没什么关系,但我不妨改成mysqli以避免其他错误。 无论如何,问题在于字符串本身;不是它的大小,而是它的内容。其中一张牌的名字有一个撇号,这可能是什么搞砸了。我删除了撇号,复制了文本并粘贴了多次以增加尺寸,它仍然完美无缺。

我想这个问题被频繁询问的原因是因为你添加的文字越多,就越有可能犯错误。

非常感谢评论^^

的所有人

答案 1 :(得分:1)

是的,这通常被称为消毒输入,是我的第一个评论。有几种方法可以消毒,但最容易理解的是使用mysql_real_escape_string(http://www.php.net/manual/en/function.mysql-real-escape-string.php