INSERT INTO 不能在一个 table 上工作但在其他人上工作并且更新也能工作?

INSERT INTO not working one table but works on others & update works too?

我的PHP/SQL脚本新table我克隆但是table 上工作得很好 我使用这个从 复制了新的 table:

SELECT * INTO slide FROM news

这是我的插入表格:

<div class="the-form" style="width:100%;">
<form class="userTrans" method="post">
<input type="hidden" name="act_userTrans" value="__insertNews_">
    <p>
        <label for="title">Title:</label>
        <input type="text" name="title" id="title">
    </p>
    <p>
        <label for="type">News Type:</label>
        <input type="text" name="type" id="type">
    </p>
    <p>
        <label for="autor">Author:</label>
        <input type="text" name="autor" id="autor">
    </p>

    <input type="text" name="text2" id="text2">
    <p class="form-footer">
        <button class="button userTrans" style="background-color: #DB6D1D;">Publish News</button>
    </p>
</form>
</div>

这是我的编辑表单:

<div class="the-form" style="width:100%;">
<form class="userTrans" method="post">
<input type="hidden" name="act_userTrans" value="__updateNews_">
    <p>
        <label for="title">Title:</label>
        <input type="text" name="title" id="title" value="<?=$edit[title]?>"/>
    </p>
    <p>
        <label for="type">News Type:</label>
        <input type="text" name="type" id="type" value="<?=$edit[type]?>"/>
    </p>
    <p>
        <label for="autor">Author:</label>
        <input type="text" name="autor" id="autor" value="<?=$edit[autor]?>"/>
    </p>

        <input type="text" name="text2" id="text2" value="">
        <input type="hidden" name="id" value="<?=$edit[id]?>">

    
    <p class="form-footer">
        <button class="button userTrans" style="background-color: #DB6D1D;">Publish News</button>
    </p>
</form>
</div>

这是我更新和插入两个不同表格的过程:

    if($activity == "__insertNews_")
    {
        $title = htmlspecialchars($_POST['title']);
        $autor = htmlspecialchars($_POST['autor']);
        $type = (int)$_POST['type'];
        if(empty($_POST['type']) || empty($_POST['autor']) || empty($_POST['title']) || empty($_POST['text2']))
        {
            echo response(0,'Fill up all the forms.',0);
            exit();
        }
        //echo $_POST[text2];
        $news = mssql_query("INSERT INTO DB1.dbo.news (title,text,type,autor) VALUES ('$title','$_POST[text2]','$type','$autor') ");
        echo response(1,'Publishing '.$title.' success!',0);
    }
    
    if($activity == "__updateNews_")
    {
        $title = htmlspecialchars($_POST['title']);
        $autor = htmlspecialchars($_POST['autor']);
        if(empty($_POST['autor']) || empty($_POST['title']))
        {
            echo response(0,'Fill up all the forms.',0);
            exit();
        }
        $news = mssql_query("UPDATE DB1.dbo.news set title='$title',autor='$autor' WHERE id='$id'  ");
        echo response(1,'Editing '.$title.' success!',0);
    }

所以使用上面的那些脚本,我能够插入和更新 dbo.news

上的任何内容

但是,当我将 DB1.dbo.news 更改为我创建的新 table 时(DB1.dbo.slide ) “插入”将不起作用。

我尝试使用相同的表单和处理脚本添加数据,“INSERT”在 dbo.slide 上不起作用,但是当我在 dbo.news 上测试它时,我能够插入数据.我还测试了 UPDATE,它正在 both dbo.slide 和 dbo.news.

上工作

现在我想知道,为什么用于 INSERT 的 SAME 脚本在其他 table 上工作,但在新脚本上不起作用(dbo.slide).这确实令人困惑,因为我没有更改任何代码,我只是更改了 table 我正在将数据插入其中并且 INSERT 函数停止工作。

调试此问题并找出导致此问题的最佳方法是什么?

mssql_query 函数不再存在于较新的 php 版本中。我建议您使用 PDO,因为它对您的好处之一是,减少常用的插入和更新操作,并且安全地抵御恶意攻击并通过SQL注入

但是现在,如果没有 DB1.dbo.slide 列和 DB1.dbo.slide 列以及您的 DB1.dbo.slide 插入查询,将无法为您提供帮助。

因此,为了获得主要帮助,请检查 DB1.dbo.slide 列并将它们与 DB1.dbo.news 进行比较。然后根据 DB1.dbo.slide 列重写您的 SQL 查询。

如果您的插入查询对 DB1.dbo.news 有效,请确保您对 DB1.dbo.slide 的插入查询不正确

已解决! 我删除了所有克隆的数据库并使用 CREATE TABLE 语句重新创建包括主键在内的所有内容,约束等,现在可以正常使用了!

看来我不应该使用它来克隆表

SELECT * INTO slide FROM news

谢谢大家抽空回复,真的很感激!