我正在我的开发机器上用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
正如你所看到的那样,所有的值都在那里,如果我手动运行这个查询,一切都很好......
这对任何人都有意义吗?
答案 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());