通过PHP更新查询清除结果

时间:2011-09-16 14:51:40

标签: php mysql sql sql-update

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

我有一个代码块可以在数据库中插入新记录,如果已存在则更新。

代码是:

            $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 )

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

echo $ sql for update语句返回以下内容:

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

正如你所看到的那样,所有的值都在那里,如果我手动运行这个查询,一切都很好......

这对任何人都有意义吗?

1 个答案:

答案 0 :(得分:0)

我认为这部分

`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());