真的停留在某種東西上。我試圖更新數據庫,並且代碼看起來是寫的 - 如果我將它直接粘貼到phpMyAdmin中,它會很好地工作 - 但代碼本身不起作用......我花了一天的時間嘗試弄清楚爲什麼它不工作,我完全沒了主意......sql語句在phpMyAdmin中工作,但不會在mysql_query中工作
function restoreSession()
{
mysql_connect("theHost", "root", "rootPWD") or die(mysql_error());
mysql_select_db("myDatabase") or die(mysql_error());
$restore_cmd = 'UPDATE wp_dor_cart66_sessions SET user_data = (SELECT user_data FROM wp_dor_cart66_stored_sessions WHERE ip_address = "' . $_SERVER['REMOTE_ADDR'] . '")';
$clean_up = "DELETE FROM `wp_dor_cart66_sessions` WHERE `ip_address` = \"" . $_SERVER['REMOTE_ADDR'] . "\" AND id NOT IN (SELECT id FROM (SELECT id FROM `wp_dor_cart66_sessions` ORDER BY id DESC LIMIT 1) user_data)";
mysql_query($clean_up) or die('Query failed: ' . mysql_error());
$result = mysql_query($restore_cmd) or die('Query failed: ' . mysql_error());
echo "<br/>";
echo $restore_cmd;
echo "<br/>";
var_dump($result);
echo "<br/>";
print_r($result);
}
輸出結果是這樣的:
UPDATE wp_dor_cart66_sessions SET user_data =
(SELECT user_data FROM wp_dor_cart66_stored_sessions
WHERE ip_address = "196.54.110.24");
bool(true)
1
它不會出現任何錯誤 - 但我只是無法讓它更新。如果它在phpMyAdmin中不起作用 - 我會知道SQL有什麼問題 - 但它看起來是正確的...我真的沒有想法 - 任何幫助將不勝感激!
這裏有一些格式的語句再次:
$restore_cmd = '
UPDATE
wp_dor_cart66_sessions
SET
user_data = (
SELECT
user_data
FROM
wp_dor_cart66_stored_sessions
WHERE
ip_address = "' . $_SERVER['REMOTE_ADDR'] . '"
)
';
$clean_up = "
DELETE FROM
`wp_dor_cart66_sessions`
WHERE
`ip_address` = \"" . $_SERVER['REMOTE_ADDR'] . "\"
AND id NOT IN (
SELECT
id
FROM
(
SELECT
id
FROM
`wp_dor_cart66_sessions`
ORDER BY
id DESC
LIMIT
1
) user_data
)
";
可能只是我(今天很喜歡)但第二個查詢(DELETE ... NOT IN ...)應該如何工作? – VolkerK
謝謝!該格式更容易閱讀。刪除語句的工作方式是選擇具有特定IP地址的所有會話,然後刪除所有不在選區中的所有會話 - 選擇限制爲1.因此,刪除除最近記錄以外的所有內容。 。我已經測試了刪除了幾次,它的工作到目前爲止... – Brendan
但不應該內部選擇以某種方式與IP地址相關(即選擇組的最大值ip = remote_addr)?現在不是,它總是選擇wp_dor_cart66_sessions中_all_記錄的最高ID。 – VolkerK