我需要在url中直接带sql语句,插入到数据库,
http://localhost/insert.php?s=insert+into+members+(uid,username)+values+(null,'蓝色')这样插入的是乱码,中文变成了 %C0%B6%C9%AB ,英文和数字一切正常。请问如何解决,谢谢<?php
include("conn.php");
$s=urlencode($_GET['s']);
$s = str_replace('+','%20',$s);
$s = str_replace('%2C',',',$s);
$s = str_replace('%27','\'',$s);
$s = str_replace('%28','(',$s);
$s = str_replace('%29',')',$s);
$s = str_replace('%20',' ',$s);
$s = str_replace('%5C','',$s);
$SQL="$s";
$query=mysql_query($SQL);
$err=mysql_error();
if($err){
echo "error:".mysql_error();
}else{
echo "success";
}
mysql_close($conn);
?>
http://localhost/insert.php?s=insert+into+members+(uid,username)+values+(null,'蓝色')这样插入的是乱码,中文变成了 %C0%B6%C9%AB ,英文和数字一切正常。请问如何解决,谢谢<?php
include("conn.php");
$s=urlencode($_GET['s']);
$s = str_replace('+','%20',$s);
$s = str_replace('%2C',',',$s);
$s = str_replace('%27','\'',$s);
$s = str_replace('%28','(',$s);
$s = str_replace('%29',')',$s);
$s = str_replace('%20',' ',$s);
$s = str_replace('%5C','',$s);
$SQL="$s";
$query=mysql_query($SQL);
$err=mysql_error();
if($err){
echo "error:".mysql_error();
}else{
echo "success";
}
mysql_close($conn);
?>
为什么要对传递过来的值进行 urlencode?就算是要也是 urldecode吧?
http://localhost/insert.php?s=insert+into+members+(uid,username)+values+(null,'蓝色')js 传递过来 看你的页面 数据库是不是UTF-8,是的话可以直接插数据库的.
$s=$_GET['s'];
echo $s;//debug
$SQL=$s;
mysql_query( "set names 'GBK ' ");
mysql_query($SQL);//=============
这样就可以了吧?
插入到数据库还是乱码
你数据库\数据表 应该不是gbk编码吧?确认弄清楚
UTF-8
include("conn.php");
$s=urldecode($_GET['s']);
$s=str_replace('\"','\'',$s);
$SQL="$s";
$query=mysql_query($SQL);
...
mysql_close($conn);
?>