撇号导致错误,表项的行重复已经通过mysqli_real_escape_string&修剪

时间:2014-11-27 02:57:21

标签: php mysql mysqli apostrophe duplication

我成功复制了连接表。耶!

现在,经过多次测试后,我发现单个撇号(转义项目)未被接受。最初在表单中创建新表行时,所有内容都通过以下方式运行:

$unit_id = mysqli_real_escape_string($dbc, trim($_POST['ajax_unit_id']));

现在,当我复制这些行来创建新记录时,我似乎不知道再次在哪里/如何转换rpm_string以便再次允许单个撇号,例如名为Don's Supah-Dupah App的标题。 / p>

重复php:

  $sql1 = "CREATE TEMPORARY TABLE   tmp
            SELECT          *
            FROM                ".ID_TABLE."
            WHERE           `unit_id` = " . $id . "";
  $result = mysqli_query($dbc,$sql1) or die(mysqli_error($dbc));

  $sql2 = "ALTER TABLE      tmp 
            DROP COLUMN     `unit_id`";
  $result = mysqli_query($dbc,$sql2) or die(mysqli_error($dbc));


  $sql3 = "UPDATE           tmp 
            SET                 `title` = '" . $titleStamp . "'";

  # ************************************************************ #
  # ****** This is where I believe the issue is occurring ****** #
  # ************************************************************ #


  $result = mysqli_query($dbc,$sql3) or die(mysqli_error($dbc));    
  $sql4 = "INSERT INTO      ".ID_TABLE." 
            SELECT          0,tmp.* 
            FROM                tmp";
  $result = mysqli_query($dbc,$sql4) or die(mysqli_error($dbc));    

  $unit_id1 = $dbc->insert_id;  //mysqli_insert_id($dbc);   // Store new unit_id as var

  $sql5 = "DROP TABLE       tmp;";
  $result = mysqli_query($dbc,$sql5) or die(mysqli_error($dbc));

1 个答案:

答案 0 :(得分:0)

在再次梳理编码后,我发现错误实际上与复制无关......有点。

注意:我提供这个答案,以防有人在那里退后一步,从5000米处查看自己的问题...而不是5英寸。希望这有助于某人将自己从兔子洞中拉出来以获得更好的视角。

在复制之前,我设置了一个由初始sql select生成的变量$title

$row = mysqli_fetch_array($rdata);
$title = $row['title'];

...然后连接titledatetimestamp

date_default_timezone_set(DEFAULT_TZ);              // Default timezone set as Australia/Melbourne
$timestamp  = date('Y/m/d h:i:s:a');
$titleStamp = $title." COPY ".$timestamp;

$title变量是问题发生的地方。在将内容插回到新行之前,必须转义新字符串。

$title      = mysqli_real_escape_string($dbc, trim($row['title']));

瞧!