mysql中mysql_real_escape_string的替代方案?

时间:2015-07-30 15:51:08

标签: php mysql database

说明

我希望能够消除mysql中的特殊字符。我使用的是mysql_real_escape_string,但我被告知它不正确,很快就会停止使用

问题

在我的情况下,使用mysql_real_escape_string的替代方法是什么?还是有另一种方法吗?

ISSUE

我正在解析CSV表单URL并创建INSERT语句。在我的情况下,我通过网址从CSV中读取数据,在线示例不会考虑$f_pointer

以下是要插入的数据行之一的示例:

注意: '中的Green's Mill导致问题。

INSERT INTO scores(place,person,score,grade,round,location)values('-','Alex','2','5','','Green's Mill')

解决问题的失败方法:

我使用的是mysql_real_escape_string - 显然非常糟糕

脚本 - 解析数据&创建插入

 <?php

$servername = "localhost";  
$username = "root";
$password = "XXXX";
$dbname = "player";

 // Create connection
  $conn = new mysqli($servername, $username, $password, $dbname);

        $f_pointer=fopen("compress.zlib://https://www.url.com/api/v2/projects/xxxx/last_ready_run/data?api_key=xxx&format=csv","r");

 $sql = "TRUNCATE TABLE scores";
 $conn->query($sql);



    if ( $f_pointer === false )
        die ("invalid URL");

   $ar=fgetcsv($f_pointer);
   while(! feof($f_pointer)){
        $ar=fgetcsv($f_pointer)

;
$sql="INSERT INTO    scores(place,person,score,grade,round,location)values('$ar[0]','$ar[1]','$ar[2]','$ar[3]','$ar[4]','$ar[5]')";
 $conn->query($sql); 
  echo $sql;
 echo "<br>";


   }
?>

输出结果

由于位置字段中的特殊字符',无法插入。

期望的结果

INSERT INTO scores(place,person,score,grade,round,location)values('-','Alex','2','5','','Greens Mill')

注意: Green's Mill必须是Greens Mill而不是'

0 个答案:

没有答案