執行我寫了一個存儲過程(MySQL的)中斷存儲過程(MySQL的)的在PHP
CREATE PROCEDURE `set_SiteAttendance`(IN _UserName VARCHAR(20) CHARSET utf8, IN _EventDesc VARCHAR(250) CHARSET utf8, IN _EventTime BIGINT(20))
BEGIN
DECLARE _EventID INT;
DECLARE cursorGetID CURSOR FOR
SELECT id
FROM client_pages
WHERE name = _EventDesc
LIMIT 0, 1;
-- try to add a new record to the database
INSERT INTO client_pages (id, name) SELECT (IFNULL(MAX(id), 0) + 1), _EventDesc FROM client_pages;
-- get id from the database records
OPEN cursorGetID;
FETCH cursorGetID INTO _EventID;
-- set the data on the visit of the page in the database
INSERT INTO login_history VALUES (NULL, _UserName, _EventID, _EventTime);
END
當我把它使用MySQL工作臺,它工作正常。
CALL set_SiteAttendance('MyName', 'page#1', 100);
當我把它使用PHP,那麼存儲過程的INSERT語句中止:
$query = "CALL set_SiteAttendance('$user_name', '$user_page', $user_ticks)";
mysql_query($query);
mysql_error()調用問題
重複條目頁面#1 'for key'name'
爲什麼會發生,以及如何解決?
是否'name'列具有獨特的屬性設置就可以了?如果是這樣,那麼當您在工作臺中創建它時,則無法再從PHP中創建它。刪除使用工作臺添加的行,使用工作臺並再次嘗試PHP代碼 – RiggsFolly
[如何從PHP代碼中調用MySQL存儲過程?](http://stackoverflow.com/questions/3966747/how-to -call-a-mysql-stored-procedure-from-within-php-code) – e4c5
我的存儲過程正常工作的邏輯。當我在MySQL Workbench中調用存儲過程時,不會發生錯誤。 基本邏輯是: 1.我試圖寫_EventDesc client_pages表的新ID爲 2.a)如果表client_pages這樣的記錄不是,它會被加上 2.b)如果表client_pages這樣的記錄已經存在,那麼它將不會被添加 3. client_pages的更多表獲取ID _EventDesc記錄 4.記下ID表login_history – Zhihar