繁体   English   中英

PHP / MySQL 查询无缘无故停止工作

[英]PHP / MySQL query stopped working for no apparent reason

我有一个页面可以更改我的 MySQL 数据库中的大量变量,到目前为止它们都运行良好,但是现在单个逻辑门内的所有查询都无缘无故地停止工作。

我已经确认了以下内容:
- 门的“if”语句中张贴和使用的变量与预期一致
- 逻辑门按预期触发(我可以在其中回显内容等)。
- 数据库连接建立,我在同一个连接变量上成功地在这个逻辑门之前和之后运行了各种类型的查询。
- 连接用户已启用所有特权,上述围绕此逻辑门的查询正在成功使用类似的功能。

这是逻辑门:

if (!empty($_POST["addqual"])){
    $coladqual = $_POST["addqual"];
    $sqlf = "ALTER TABLE users ADD UNIQUE ('$coladqual') INT( 2 ) NOT NULL";
    $conn->query($sqlf);
    $sqlc = "INSERT INTO competencebonus (competence,bonus)
    VALUES ($coladqual,0)";
    $conn->query($sqlc);
}

我尝试了多种更改,但无论我做什么,它们似乎都无法执行。 在这两个之前和之后,我在其他逻辑门中至少有 20 个其他查询,它们之间似乎几乎没有区别,除了这两个根本不起作用。

编辑 - 这是错误(感谢所有为我提供错误报告语法的人)

您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的 ''TestAA') INT(2) NOT NULL UNIQUE' 附近使用的正确语法

令我感到奇怪的是,只有右括号在后输入 (TestAA) 周围。 它应该两者兼而有之吗?

我尝试更改语法并收到以下错误:

密钥“TestAB”的重复条目“0”

语法是:

$sqlf = "ALTER TABLE users ADD `$coladqual` INT( 2 ) NOT NULL UNIQUE";

最终编辑:

让它工作。 删除了 Jeff Pucket II 推荐的“NOT NULL”语句。 不知何故,这与删除括号和使用反引号而不是撇号相结合使事情起作用。 感谢那些有耐心帮助我解决这个问题的人。

看起来您正在尝试使用唯一的非空列更改现有表。 如果表中已经存在任何行,我希望这会失败,除非您的引擎归零。 即使这样,如果由于唯一约束而存在多个记录,这也会失败。 还要确保添加的列名不存在。

要使用 MySQLi 获取错误,请尝试: $result = $conn->query($sqlf) or die($conn->error);

'unique' 约束应该放在查询的末尾

$sqlf = "ALTER TABLE users ADD ('$coladqual') INT( 2 ) NOT NULL UNIQUE";

错误检查取决于您正在运行的 MySQL 版本

暂无
暂无

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

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