我已经准备好拔掉我的头发了...
这非常有效:
$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 查询以保存此时会话中的所有内容。如果没有错误,并且在发生其他一些事情之后,将运行第二个 sql 查询来更新那些先前保存的条目中的“已删除”状态。
我一直在修改一百万个替代语法,但我无法更新这些行。当我在 phpMyAdmin 中执行原始 SQL 时,它工作正常。这没有什么逻辑……或者也许我只是太累了。
仅供参考:$sessionid = session_id();
-- 更新 --
我真的很感谢大家的关心,但让我解决一些问题:
die
语句中。mysql_error()
不会产生任何结果...根本没有错误。再次感谢您的关心,但到目前为止,所有建议都已反复尝试。
使用
mysql_error()
从数据库获取错误消息,如下所示:
mysql_query($query) or die ('Error updating database: '.mysql_error());
错误可能是多种原因之一,例如用户可能没有 DELETE 权限。如果您不使用
mysql_error()
,就无法知道发生了什么。
编辑 session_id 列中的数据看起来很短。检查
session_id
返回的字符串有多长,并检查数据库中的列长度。插入对于列来说太长的数据并不是错误,但它确实会裁剪数据。
您是否尝试过检查...
$sessionid
的值是多少您可以通过将
die()
更改为... 来完成后者
mysql_query($query) or die (mysql_error());
不知道为什么第二个查询不执行。如果没有看到数据库表的架构,也没有发布服务器生成的错误消息的内容,那么真的很难为您提供帮助。但与此同时,我强烈建议您花点时间研究一下SQL注入的危险。
可能还想确保在打扰
session_start()
之前先打电话给
session_id();
mysql_error() 返回空白的一个可能原因是同时打开了多个连接。我最近在将脚本传输到较新的服务器/版本的 PHP 时遇到了这个问题。尝试在调用中提供连接句柄,如下所示:mysql_error( $link )
这应该可以帮助您找到错误所在,并且了解这一点将有助于我们回答您的问题。
而且,尽管您表示您并不担心注入攻击 - 您应该始终转义来自用户/可疑来源的所有数据。至少在放入数据库的每个 $_GET、$_POST、$_COOKIE、$_REQUEST 和 $_SERVER 变量周围使用 mysql_real_escape_string() 。我向您推荐小鲍比·泰布尔斯的故事......
在数据库结构中取消勾选你的自增框,然后再次勾选保存自增结构,你的问题就解决了。
我在做的时候遇到这样的错误
mysql_query($query) or die (mysql_error());
错误是:
数据库更新失败:引擎更新自动增量失败。
好像发生了这个错误,我忽略了复制