簡體   English   中英

(PHP / MYSQL)插入大值,無超時或錯誤時,Insert Into將不起作用

[英](PHP/MYSQL) Insert Into won't work when inserting large values, no timeout or errors

我正在使用Flash開發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無法處理長文本嗎? 有辦法解決這個問題嗎?

預先謝謝^^

我發現了問題。 它與mysql_connect錯誤沒有任何關系,但是我還是最好改用mysqli以避免其他錯誤。 無論如何,問題出在字符串本身。 不是大小,而是內容。 其中一張卡的名稱帶有撇號,這很可能使事情搞砸了。 我刪除了撇號,復制了文本並將其粘貼多次以增加大小,但仍然可以正常使用。

我猜為什么這么頻繁地問這個問題是因為您添加的文字越多,您犯錯的可能性就越大。

非常感謝所有發表評論的人^^

是的,這通常被稱為清理輸入,這是我的第一條評論。 有幾種清理方法,但最容易理解的是使用mysql_real_escape_string( http://www.php.net/manual/zh/function.mysql-real-escape-string.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM