很多時候我們在下SQL語言時出錯卻一直找不出原因, 很多時候是因為在MYSQL內的COLUMN使用了reserved word 而造成的. 以下為MYSQL 的reserved word, 如果你在命名table.column時就要儘可能避開使用這些保留變數了.

ACCESSIBLE 	ADD 	ALL
ALTER 	ANALYZE 	AND
AS 	ASC 	ASENSITIVE
BEFORE 	BETWEEN 	BIGINT
BINARY 	BLOB 	BOTH
BY 	CALL 	CASCADE
CASE 	CHANGE 	CHAR
CHARACTER 	CHECK 	COLLATE
COLUMN 	CONDITION 	CONSTRAINT
CONTINUE 	CONVERT 	CREATE
CROSS 	CURRENT_DATE 	CURRENT_TIME
CURRENT_TIMESTAMP 	CURRENT_USER 	CURSOR
DATABASE 	DATABASES 	DAY_HOUR
DAY_MICROSECOND 	DAY_MINUTE 	DAY_SECOND
DEC 	DECIMAL 	DECLARE
DEFAULT 	DELAYED 	DELETE
DESC 	DESCRIBE 	DETERMINISTIC
DISTINCT 	DISTINCTROW 	DIV
DOUBLE 	DROP 	DUAL
EACH 	ELSE 	ELSEIF
ENCLOSED 	ESCAPED 	EXISTS
EXIT 	EXPLAIN 	FALSE
FETCH 	FLOAT 	FLOAT4
FLOAT8 	FOR 	FORCE
FOREIGN 	FROM 	FULLTEXT
GRANT 	GROUP 	HAVING
HIGH_PRIORITY 	HOUR_MICROSECOND 	HOUR_MINUTE
HOUR_SECOND 	IF 	IGNORE
IN 	INDEX 	INFILE
INNER 	INOUT 	INSENSITIVE
INSERT 	INT 	INT1
INT2 	INT3 	INT4
INT8 	INTEGER 	INTERVAL
INTO 	IS 	ITERATE
JOIN 	KEY 	KEYS
KILL 	LEADING 	LEAVE
LEFT 	LIKE 	LIMIT
LINEAR 	LINES 	LOAD
LOCALTIME 	LOCALTIMESTAMP 	LOCK
LONG 	LONGBLOB 	LONGTEXT
LOOP 	LOW_PRIORITY 	MASTER_SSL_VERIFY_SERVER_CERT
MATCH 	MEDIUMBLOB 	MEDIUMINT
MEDIUMTEXT 	MIDDLEINT 	MINUTE_MICROSECOND
MINUTE_SECOND 	MOD 	MODIFIES
NATURAL 	NOT 	NO_WRITE_TO_BINLOG
NULL 	NUMERIC 	ON
OPTIMIZE 	OPTION 	OPTIONALLY
OR 	ORDER 	OUT
OUTER 	OUTFILE 	PRECISION
PRIMARY 	PROCEDURE 	PURGE
RANGE 	READ 	READS
READ_WRITE 	REAL 	REFERENCES
REGEXP 	RELEASE 	RENAME
REPEAT 	REPLACE 	REQUIRE
RESTRICT 	RETURN 	REVOKE
RIGHT 	RLIKE 	SCHEMA
SCHEMAS 	SECOND_MICROSECOND 	SELECT
SENSITIVE 	SEPARATOR 	SET
SHOW 	SMALLINT 	SPATIAL
SPECIFIC 	SQL 	SQLEXCEPTION
SQLSTATE 	SQLWARNING 	SQL_BIG_RESULT
SQL_CALC_FOUND_ROWS 	SQL_SMALL_RESULT 	SSL
STARTING 	STRAIGHT_JOIN 	TABLE
TERMINATED 	THEN 	TINYBLOB
TINYINT 	TINYTEXT 	TO
TRAILING 	TRIGGER 	TRUE
UNDO 	UNION 	UNIQUE
UNLOCK 	UNSIGNED 	UPDATE
USAGE 	USE 	USING
UTC_DATE 	UTC_TIME 	UTC_TIMESTAMP
VALUES 	VARBINARY 	VARCHAR
VARCHARACTER 	VARYING 	WHEN
WHERE 	WHILE 	WITH
WRITE 	XOR 	YEAR_MONTH
ZEROFILL 	  	 

The following are new reserved words in MySQL 5.1:

ACCESSIBLE 	LINEAR 	MASTER_SSL_VERIFY_SERVER_CERT
RANGE 	READ_ONLY 	READ_WRITE

參考資料: http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

環境: PHP4 + Apache4 + Windows
函數: iconv (http://tw.php.net/iconv)

最近有幫舊電腦寫程式,
發現PHP4預設不支援iconv, 先別擔心升級PHP5所帶來的其他風險,
其實是有辦法可以在PHP4下解決的:

1. 在C:\php\dll 底下有個 php_iconv.dll
2. 將此DLL放到 c:\Windows\system32\ 底下
3. 在C:\php\php.ini 將 extension 下的 php_iconv.dll Uncomment掉(把分號拿掉)
4. 重新啟動Apache.
5. It works!

在網路上找到的blink不是只能用於IE就是只相容於FF, 於是自己嘗試寫了一個JavaScript Blink的功能.
在IE8 及FF測試都沒問題. 閃爍的頻率在SetTimeout裡面可以設定, 1000表示1秒, 2000為2秒, 以此類推.




征才 


剛在JavaScript寫程式時,
發現我的Ajax功能在FireFox可以跑成功, Firebug也偵測不出問題,
但用IE時卻出現錯誤, 顯示說某某行找不到物件.
後來去找了很久才知道原來問題出在一個平時很少注意的地方:

乍看之下可能會覺得以上兩行沒有甚麼差別, 但其實問題就在type的部分,
在FF是可以辨識成功的, 但在IE(測試環境IE8)的情況下就讀取不到Javascript.
所以以後要多注意囉.

PHP的File Upload功能固然強大, 但要滿足大量檔案上傳的需求仍需要搭配AJAX或是Flash object, 這篇文章就是要介紹一個好用的Flash Uploader, 讓你可以直接從Windows, 在同一個目錄下選取要上傳的檔案, 達成輕鬆上傳的目的.

SwfUpload

官方網站: http://swfupload.org/

範例: http://demo.swfupload.org/v220/index.htm

index.php FLASH檔案上傳的頁面

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=big5″ />
<link href=”style.css” rel=”stylesheet” type=”text/css” />
<link href=”default.css” rel=”stylesheet” type=”text/css” />
<title>測試</title>
<script type=”text/javascript” src=”swfupload/swfupload.js”></script>
<script type=”text/javascript” src=”js/swfupload.swfobject.js”></script>
<script type=”text/javascript” src=”js/swfupload.queue.js”></script>
<script type=”text/javascript” src=”js/fileprogress.js”></script>
<script type=”text/javascript” src=”js/handlers.js”></script>
<script type=”text/javascript”>
var swfu;

SWFUpload.onload = function () {
var settings = {
flash_url : “swfupload/swfupload.swf”,
upload_url: “upload.php”, //負責處理上傳的PHP檔案
post_params: {
“PHPSESSID” : “NONE”,
“HELLO-WORLD” : “Here I Am”,
“.what” : “OKAY”
},
file_size_limit : “100 MB”,
file_types : “*.*”,
file_types_description : “All Files”,
file_upload_limit : 100,
file_queue_limit : 0,
custom_settings : {
progressTarget : “fsUploadProgress”,
cancelButtonId : “btnCancel”
},
debug: false,

// Button Settings
button_image_url : “images/XPButtonUploadText_61x22.png”,
button_placeholder_id : “spanButtonPlaceholder”,
button_width: 61,
button_height: 22,

// The event handler functions are defined in handlers.js
swfupload_loaded_handler : swfUploadLoaded,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
queue_complete_handler : queueComplete,    // Queue plugin event

// SWFObject settings
minimum_flash_version : “9.0.28”,
swfupload_pre_load_handler : swfUploadPreLoad,
swfupload_load_failed_handler : swfUploadLoadFailed
};

swfu = new SWFUpload(settings);
}

</script>

</head>

<body>

<form id=”form1″ action=”index.php” method=”post” enctype=”multipart/form-data”>
<div id=”divSWFUploadUI”>
<div class=”fieldset  flash” id=”fsUploadProgress”>
<span class=”legend”>Upload Queue</span>
</div>
<p id=”divStatus”>0 Files Uploaded</p>
<p>
<span id=”spanButtonPlaceholder”></span>
<input id=”btnCancel” type=”button” value=”Cancel All Uploads” disabled=”disabled” style=”margin-left: 2px; height: 22px; font-size: 8pt;” />
<br />
</p>
</div>
<noscript>
<div style=”background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966;  padding: 10px 15px;”>
We’re sorry.  SWFUpload could not load.  You must have JavaScript enabled to enjoy SWFUpload.
</div>
</noscript>
<div id=”divLoadingContent” class=”content” style=”background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;”>
SWFUpload is loading. Please wait a moment…
</div>
<div id=”divLongLoading” class=”content” style=”background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;”>
SWFUpload is taking a long time to load or the load has failed.  Please make sure that the Flash Plugin is enabled and that a working version of the Adobe Flash Player is installed.
</div>
<div id=”divAlternateContent” class=”content” style=”background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;”>
We’re sorry.  SWFUpload could not load.  You may need to install or upgrade Flash Player.
Visit the <a href=”http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash”>Adobe website</a> to get the Flash Player.
</div>
</form>

</body>

</html>

upload.php , 負責處理上傳後的PHP

$upload_name = “Filedata”;

if(isset($_FILES[$upload_name])) {

$filename = $_FILES[$upload_name][‘name’];
copy($_FILES[$upload_name][‘tmp_name’], $filename);

}