我准备拔头发了...
这非常有效:
$link = mysql_connect('localhost', 'prototype_wp_usr', 'password') or die("Error: " . mysql_error());
mysql_select_db('prototype_wp');
$query = "INSERT INTO wp_zsession_capture
(id, session_id, user_login, first_name, last_name, user_email, phone_number, last_conviction)
VALUES (
'NULL',
'". session_id() ."',
'". $_POST['user_login'] ."',
'". $_POST['first_name'] ."',
'". $_POST['last_name'] ."',
'". $_POST['user_email'] ."',
'". $_POST['phone_number'] ."',
'". $_POST['last_conviction'] ."'
)";
mysql_query($query) or die ('Error updating database: ' . mysql_error());
mysql_close($link);
这不有效:
$link = mysql_connect('localhost', 'prototype_wp_usr', 'password') or die("Error: " . mysql_error());
mysql_select_db('prototype_wp');
$query = "UPDATE wp_zsession_capture SET removed = 1 WHERE session_id = '$sessionid'";
mysql_query($query) or die ('Error updating database: ' . mysql_error());
mysql_close($link);
这两段代码在一个表单中...如果表单中有错误,将运行第一个 sql 查询以保存 session 中的任何内容。如果没有错误,并且在其他一些事情继续之后,将运行第二个 sql 查询以更新那些先前保存的条目中的“已删除”状态。
我一直在修补一百万种替代语法,但我无法更新这些行。当我在 phpMyAdmin 中执行原始 SQL 时,它工作正常。这没有任何逻辑可言……或者我只是太累了。
仅供引用:$sessionid = session_id();
-- 更新 --
我真的很感谢大家的关心,但让我谈谈一些事情:
- 是的,我的表中有一列名为“已删除”……你是认真的吗? :P
- 我当然在使用 session_start();
- 是的,我正在检查 $sessionid 以确保它已被调用。它始终在页面上回显,并且也在我执行的任何
die
语句中。 - 第一个查询负责创建第二个查询应该更新的行...所以数据就在那里。
mysql_error()
没有产生任何结果……根本就没有错误。
再次感谢您的关心,但到目前为止,所有建议都已尝试并再次尝试。
最佳答案
使用mysql_error()
从数据库获取错误信息,像这样:
mysql_query($query) or die ('Error updating database: '.mysql_error());
错误可能是多种原因之一,例如用户可能没有删除权限。如果您不使用 mysql_error()
,则无法知道发生了什么。
编辑 您的 session_id 列中的数据看起来短得可疑。检查session_id
返回的字符串有多长,并检查数据库中的列长度。插入对于列来说太长的数据不是错误,但它会裁剪数据。
关于PHP,mysql_query 只是不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9092159/