PHP/MMySQL查询无明显原因停止工作


PHP / MySQL query stopped working for no apparent reason

我有一个页面,它更改了MySQL数据库中的大量变量,到目前为止,它们都运行得很好,但现在单个逻辑门内的所有查询都毫无原因地停止了工作。

我已确认以下内容:
-在gate的"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语法有错误;在第1行的"测试AA")INT(2)NOT NULL UNIQUE附近,请查看与MySQL服务器版本对应的手册,以获得正确的语法

让我感到奇怪的是,post输入(TestAA)周围只有右括号。它应该两者都有还是两者都没有?

我尝试更改语法,得到以下错误:

密钥"TestAB"的重复条目"0"

语法为:

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

最终编辑:

成功了。删除了Jeff Pucket II建议的"NOT NULL"语句。不知怎的,这与删除括号和使用反勾号而不是撇号相结合,使事情顺利进行。谢谢你们这些有耐心帮助我的人。

看起来您正试图用一个唯一的非null列来更改现有表。如果表中已经存在任何行,我预计这将失败,除非您的引擎估算为零。即便如此,如果由于唯一约束而存在多个记录,这也会失败。还要确保要添加的列名不存在。

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

"唯一"约束应位于查询的末尾

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

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