在mysql中包含';

在mysql中包含';,mysql,insert,special-characters,Mysql,Insert,Special Characters,我正在将大量信息从XML文件写入数据库 一切正常,直到我遇到一个字段,在描述中带有“插入失败并出现错误” 对应于您的MySQL服务器 要使用的正确语法的版本 我希望你也有这种感觉。 我们希望您能来参观我们 3号线超过100英尺 有没有一种方法可以让它插入而不会失败?导入文件可能很大,并且会定期更改,因此我无法在其中搜索和替换“字符” 我的实际PHP语句是: $query = mysql_query("REPLACE into list (id, name, link, description,

我正在将大量信息从XML文件写入数据库

一切正常,直到我遇到一个字段,在描述中带有“插入失败并出现错误”

对应于您的MySQL服务器 要使用的正确语法的版本 我希望你也有这种感觉。 我们希望您能来参观我们 3号线超过100英尺

有没有一种方法可以让它插入而不会失败?导入文件可能很大,并且会定期更改,因此我无法在其中搜索和替换“字符”

我的实际PHP语句是:

$query = mysql_query("REPLACE into list
(id, name, link, description, cost, date_added,type,myipaq,private,imgurl)
VALUES ('$id','$name','$link',"'$description'",'$cost','$date','$type','$myipaq','$private','$imgurl')");
提前感谢,


Greg

只需通过
mysql\u real\u escape\u string()
只需通过
mysql\u real\u escape\u string()
传递数据这属于SQL注入的范畴

在PHP中,函数mysql\u real\u escape\u string用于对字符串进行编码,这样就不会影响它可能连接到的SQL语句

因此,请确保所有的值都通过mysql\u real\u escape\u string函数,您就会没事了


API REF:

这属于SQL注入的范畴

在PHP中,函数mysql\u real\u escape\u string用于对字符串进行编码,这样就不会影响它可能连接到的SQL语句

因此,请确保所有的值都通过mysql\u real\u escape\u string函数,您就会没事了

API参考号:

使用:

就是这样

如果你用它,就用它

删除字符串中的斜杠

使用:

就是这样

如果你用它,就用它


删除字符串中的斜杠

使用我方便的花花公子功能:

function mysql_safe_string($value) {
    if(is_numeric($value))      return $value;
    elseif(empty($value))       return 'NULL';
    elseif(is_string($value))   return '\''.mysql_real_escape_string($value).'\'';
    elseif(is_array($value))    return implode(',',array_map('mysql_safe_string',$value));
}

function mysql_safe_query($format) {
    $args = array_slice(func_get_args(),1);
    $args = array_map('mysql_safe_string',$args);
    $query = vsprintf($format,$args);
    $result = mysql_query($query);
    if($result === false) echo '<div class="mysql-error"><strong>Error: </strong>',mysql_error(),'<br/><strong>Query: </strong>',$query,'</div>';
    return $result;
}

忘记引用或不引用字符串,并写出十几次
mysql\u real\u escape\u string

使用我方便的dandy函数:

function mysql_safe_string($value) {
    if(is_numeric($value))      return $value;
    elseif(empty($value))       return 'NULL';
    elseif(is_string($value))   return '\''.mysql_real_escape_string($value).'\'';
    elseif(is_array($value))    return implode(',',array_map('mysql_safe_string',$value));
}

function mysql_safe_query($format) {
    $args = array_slice(func_get_args(),1);
    $args = array_map('mysql_safe_string',$args);
    $query = vsprintf($format,$args);
    $result = mysql_query($query);
    if($result === false) echo '<div class="mysql-error"><strong>Error: </strong>',mysql_error(),'<br/><strong>Query: </strong>',$query,'</div>';
    return $result;
}

忘记引用或不引用字符串,并写出十几次
mysql\u real\u escape\u string

使用PHP插入、替换或与数据库上的任何内容交互的唯一真正安全的方法是使用预先准备好的语句。真的没有任何借口再以任何其他方式做这件事了。使用mysql\u real\u escape\u字符串转义字符串将为您提供一些保护,但它不是防弹的

准备好的声明甚至不难。看到他们的页面,有几个包装,使生活更容易,我个人喜欢的很多,并已使用了一段时间没有问题-它不难比直接的MySQL PHP代码。看起来也很有希望


您应该查看相关问题,了解为什么不应该偷懒的更多细节。

使用PHP插入、替换或与数据库中的任何内容交互的唯一真正安全的方法是使用预先准备好的语句。真的没有任何借口再以任何其他方式做这件事了。使用mysql\u real\u escape\u字符串转义字符串将为您提供一些保护,但它不是防弹的

准备好的声明甚至不难。看到他们的页面,有几个包装,使生活更容易,我个人喜欢的很多,并已使用了一段时间没有问题-它不难比直接的MySQL PHP代码。看起来也很有希望


您应该查看相关问题,了解为什么不应该偷懒的更多详细信息。

我不是PHP爱好者或MySQL爱好者,但您能做一些HTML编码来编码它吗?然后你可以对它进行HTML解码,再次显示出来。啊。。大师说它叫
mysql\u real\u escape\u string
——我认为它和html编码的概念是一样的,
$description
为什么有双引号?这不会导致PHP错误,因为它们不会被转义吗?而MySQL错误是否被转义?在MySQL之前用这段代码解决,谢谢大家$link\u id=mysql\u real\u escape\u字符串($link\u id)$link\u name=mysql\u real\u escape\u字符串($link\u name)$description=mysql\u real\u escape\u字符串($description)$metadesc=mysql\u real\u escape\u字符串($metadesc)$link\u created=mysql\u real\u escape\u string($link\u created)$link\u modified=mysql\u real\u escape\u字符串($link\u modified)$website=mysql\u real\u escape\u string($website)$cost=mysql\u real\u escape\u字符串($cost);不,使用事先准备好的陈述。准备语句是防止SQL注入攻击的唯一防弹方法,而不应考虑使用其他任何方法。我不是PHP或者MySQL的人,但是你能做一些HTML编码来编码它吗?然后你可以对它进行HTML解码,再次显示出来。啊。。大师说它叫
mysql\u real\u escape\u string
——我认为它和html编码的概念是一样的,
$description
为什么有双引号?这不会导致PHP错误,因为它们不会被转义吗?而MySQL错误是否被转义?在MySQL之前用这段代码解决,谢谢大家$link\u id=mysql\u real\u escape\u字符串($link\u id)$link\u name=mysql\u real\u escape\u字符串($link\u name)$description=mysql\u real\u escape\u字符串($description)$metadesc=mysql\u real\u escape\u字符串($metadesc)$link\u created=mysql\u real\u escape\u string($link\u created)$link\u modified=mysql\u real\u escape\u字符串($link\u modified)$website=mysql\u real\u escape\u string($website)$cost=mysql\u real\u escape\u字符串($cost);不,使用事先准备好的陈述。准备语句是防止SQL注入攻击的唯一防弹方法,而不应考虑使用其他任何方法。否则做是非常糟糕的专业实践。为了澄清这一点,在创建查询字符串之前,请通过该函数传递每个值。在整个查询中不使用该函数。不,使用准备好的语句-1表示另有建议。要澄清,请在更改之前通过该函数传递每个值
mysql_safe_query('INSERT INTO table VALUES (%s, %s, %s)', $val1, $val2, $val3);