MySQL错误:表名不正确

时间:2013-04-05 13:32:14

标签: php mysql sql

我对网络开发很陌生,所以我很有可能在这里做一些非常愚蠢的事情。

我正在使用AJAX将数据发送到PHP文件,该文件将使用数据运行SQL命令来更新表。我正在处理编辑文章,所以我的PHP文件需要知道三件事:文章的原始名称(供参考),新名称和新内容。我还告诉它用户正在查看哪个页面,因此它知道要编辑哪个表。

    $('#save_articles').click(function () {

    var current_page = $('#current_location').html();
    var array_details = {};
    array_details['__current_page__'] = current_page;

        $('#article_items .article_title').each(function(){

            var article_name = $(this).html(); //The text in this div is the element name
            var new_article_name = $(this).next('.article_content');
            new_article_name = $(new_article_name).children('.article_content_title').html();
            var new_article_content = $(this).next('.article_content');
            new_article_content = $(new_article_content).children('.article_content_content').html();

            array_new_deets = {new_name:new_article_name, content:new_article_content};
            array_details[article_name] = array_new_deets;

        });

        send_ajax("includes/admin/admin_save_articles.php", array_details);

    });

在PHP文件中,我首先检索当前页面并将其存储在$ sql_table中,然后从$ _POST中删除当前页面变量。然后我跑了。

foreach($_POST as $key => $value){

        $original_name = $key;
        $new_name = $value['new_name'];
        $new_cont = $value['content'];


        $query =    "UPDATE 
                        `$sql_table`
                    SET 
                        `element_name`= '$new_name',
                        `element_content` = '$new_cont',
                    WHERE
                        `element_name` = '$original_name'";

        $query = mysql_query($query);


        if(!$query){

                die(mysql_error());

            }

    }

我总是收到一条错误消息,指出'sitep_Home'是一个不正确的表名。它不仅是我的数据库中的真实表,而且我实际上已更改其名称,以确保它不是关键字或其他问题。

如果我在没有变量$ sql_table的情况下运行查询(指定该表名为'sitep_Home'),则查询接受该表。然后它实际上不会更新表,我怀疑这是因为WHERE参数也使用了变量。

谁能看到我在这里做错了什么?

4 个答案:

答案 0 :(得分:0)

如果您确定这包含正确的表名,请尝试将$sql_table用作'$sql_table'。 就像你正在使用其他列的值 检查这是否有帮助!!

答案 1 :(得分:0)

在执行之前转储/记录您的查询 - 此后问题应该非常明显(我怀疑表名中还有一些其他字符)。

一些事情:

答案 2 :(得分:0)

表名在MySQL中区分大小写。请检查案件是否有错误。

答案 3 :(得分:0)

你必须在这个``qoutes中查询mysql表的名字。当你在动态创建mysql表时,在创建之前修剪($ variable of mysql name table)是非常重要的,因为如果" $变量的mysql名表"在edns或启动mysql中有空间而不是创建表。最后当你在查询中调用dinamically $变量的mysql名表时,你必须再次修剪(mysql name table的$变量)。