在sql文本表中插入撇号?

时间:2012-11-05 06:13:56

标签: php sql

我有一个sql插入脚本,当用户在文本区域中键入文本时更新数据库中的sql表,但如果用户在其文本中使用撇号,则不会将信息插入表中。这是因为sql将撇号作为结束语句或其他内容读取。但有没有办法使用一个允许用户输入撇号的语句,即告诉sql使用'%s%'或其他代表撇号?

继承我正在使用的sql更新代码:

   <?php 

session_start();

include '_config/connection.php'; 

$status = $_POST['status'];

$result = mysql_query("SELECT status FROM ptb_profiles WHERE id=".$_SESSION['user_id']."");





if(!$result) 
{ 
echo "The username you entered does not exist"; 
} 
else 
if($status!= mysql_result($result, 0)) 
{ 
echo ""; 


    $sql=mysql_query("UPDATE ptb_profiles SET status ='$status' WHERE id=".$_SESSION['user_id'].""); 
}
    if($sql) 
    { 


}
header('Location: http://localhost/ptb1/profile.php?id=' . $_SESSION['user_id'] );
?>

3 个答案:

答案 0 :(得分:2)

难道你不能逃脱撇号吗?将数据推送到mysql_query()时使用mysql_real_escape_string()是标准做法。

答案 1 :(得分:0)

更小的更改并重写一行代码 -

$sql=mysql_query('UPDATE ptb_profiles SET status ="'. mysql_real_escape_string($status) .'" WHERE id='.$_SESSION['user_id']);

答案 2 :(得分:0)

改变这个:

$sql=mysql_query("UPDATE ptb_profiles SET status ='$status' WHERE id=".$_SESSION['user_id']."");

到此:

$sql=mysql_query('UPDATE ptb_profiles SET status ="'. mysql_real_escape_string($status) .'" WHERE id='.$_SESSION['user_id']);

P.S。永远不要将变量直接从$ _POST或$ _GET或$ _REQUEST直接插入到SQL中,否则最终会出现SQL注入漏洞。