真的停留在某种东西上。我试图更新数据库,并且代码看起来是写的 - 如果我将它直接粘贴到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