【问题标题】:Update Query clearing results through PHP通过 PHP 更新查询清除结果
【发布时间】:2011-09-16 14:51:39
【问题描述】:

我正在我的开发机器下使用 PHP 进行开发并远程连接到数据库。我将文件上传到服务器并在线查询按预期工作,但在本地主机中却没有。所有其他查询都有效!

我有一段代码可以在数据库中插入一条新记录,或者如果它已经存在则更新它。

代码是:

            $name = mysql_real_escape_string($_REQUEST['name']);
            $title = mysql_real_escape_string($_REQUEST['title']);
            $content = $_REQUEST['content'];
    $lang_drop = mysql_real_escape_string($_REQUEST['lang']);
            if($uid == 0)
            {
                $maxSort = tools::getInfo($table, Array(), Array('MAX(sort_order) as sort_order'));
                $maxSort = $maxSort[0]['sort_order']+1;
                    $sql="insert into quemsomos (title,name,lang,sort_order)
                            values(
                                '$title',
                                '$name',
                                '$lang_drop',
                                $maxSort
                            )";
                        echo $sql;
                    mysql_query($sql);
                    $uid = mysql_insert_id();
            }
            else{
$maxSort = $data['sort_order'];
                    $sql="update `quemsomos` set `title`='blabkalm', `name`='{$name}', `lang`='{$lang_drop}', `sort_order`=$maxSort where `uid`={$uid}";
                    mysql_query($sql);
                    echo $sql;
                }

很简单...如果我插入一条新记录,它可以正常工作并且打印的 $sql 值是:

insert into quemsomos (title,name,lang,sort_order) values('title412', 'name421', 'pt', 3 )

问题是当我更新查询时执行但只有硬编码的值存储在数据库中。我的意思是,在下面的更新之后,数据库中的所有值都是空的,除了 sort_order 被保存和标题(因为它是硬编码的......如果我放置正确的变量,该字段也会变为空白)

更新语句的echo $sql 返回以下内容:

update `quemsomos` set `title`='blabkalm', `name`='name421', `lang`='pt', `sort_order`=3 where `uid`=2

如您所见,所有值都在那里,如果我手动运行此查询,一切正常...

这对任何人都有意义吗?

【问题讨论】:

    标签: php mysql sql sql-update


    【解决方案1】:

    我认为这部分

    `uid`={$uid}";
    

    不好。你可以这样确定:

    $sq='\''; 
    $sql="update `quemsomos` set `title`='blabkalm', `name`=".$sq.$name.$sq.", `lang`=".$sq.
    $lang_drop.$sq.", `sort_order`=".$sq.$maxSort.$sq." where `uid`=".$sq.$uid.$sq."   ";
    

    这必须有效。

    另外一件事..mysql错误对调试有很大帮助导致输出错误,不要忘记使用它:

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

    【讨论】:

    • 嗨!谢谢回复。我只能在星期一试一试......虽然我从来没有这样做过,但现在我相信一切;)我会回复你的!谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2018-06-04
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多