繁体   English   中英

PHP,mysql_query不能正常工作

[英]PHP, mysql_query just NOT working

我准备拉头发...

这完美地工作:

$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);

这两段代码在一个表单中...如果表单中有错误,则运行FIRST sql查询以保存该时刻会话中的所有内容。 如果没有错误,并且在进行其他操作后,将运行SECOND sql查询以更新那些先前保存的条目中的“已删除”状态。

我一直在修补一百万种替代语法,但无法将这些行更新。 当我在phpMyAdmin中执行原始SQL时,它工作正常。 对此没有任何逻辑……或者我是如此的疲倦。

仅供参考:$ sessionid = session_id();

- 更新 -

我真的很感谢大家的关注,但是让我解决一些问题:

  1. 是的,我的表格中有一列名为“已删除” ...您是认真的吗? :P
  2. 我当然在使用session_start();
  3. 是的,我正在检查$ sessionid以确保已调用它。 它始终在页面上回显,并且也在我执行的任何die语句内。
  4. FIRST查询负责创建SECOND查询应该更新的行...因此数据就在那里。
  5. mysql_error()不会产生任何结果……根本没有错误。

再次感谢您的关注,但到目前为止,所有建议均已尝试并再次尝试。

在此处输入图片说明

使用mysql_error()从数据库中获取错误消息,如下所示:

mysql_query($query) or die ('Error updating database: '.mysql_error());

该错误可能是许多事情之一,例如,例如,该用户可能没有DELETE权限。 如果不使用mysql_error()则无法知道发生了什么。

编辑 session_id列中的数据看起来很短。 检查session_id返回的字符串有多长时间,并检查数据库中的列长。 插入对于列而言太长的数据不是错误,但是确实会裁剪数据。

您是否尝试过检查...

  1. 调用脚本时$sessionid的值是什么
  2. mysql返回什么错误(如果有)?

您可以通过将die()更改为...来完成后者。

mysql_query($query) or die (mysql_error());

mysql_error()返回空白的一个可能原因是同时打开了多个连接。 最近在将脚本传输到更新的服务器/ PHP版本时遇到了这个问题。 尝试在呼叫中提供连接句柄,如下所示:mysql_error($ link)

那应该可以帮助您找到错误所在,并且知道这将有助于我们回答您的问题。

而且,尽管您说过您并不担心注入攻击-您应该始终逃避来自用户/可疑来源的所有数据。 至少要对放入数据库的$ _GET,$ _ POST,$ _ COOKIE,$ _ REQUEST和$ _SERVER变量使用mysql_real_escape_string()。 我向您介绍小鲍比桌子的故事...

如果您不逃避用户输入,就会发生这种情况。

http://xkcd.com/327/

不知道为什么第二个查询不执行。 如果没有看到数据库表的架构,也没有发布服务器生成的错误消息的内容,那么将很难为您提供帮助。 同时,我强烈建议您花一点时间对SQL注入的危险进行一些研究。

可能还需要确保你调用session_start()搞乱之前session_id();

取消选中“自动删除”框进入数据库结构,然后再次检查以保存自动删除结构,您的问题将得到解决。 我在执行时遇到这种错误

mysql_query($ query)或死掉(mysql_error());

错误是

数据库更新失败:自动创建无法由Engine更新。

好像发生了此错误,我省略了复制

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM