2

当文本字段值中有撇号时,需要帮助输入不会插入到 db 中,我试图使用下面的代码来转义 ' 但它不起作用,

function myaddslashes($string){ 
    if(get_magic_quotes_gpc() == 1){ 
        return $string; 
    } else { 
        return str_replace("'", "''", $string); 
    } 
}  

我也用过这个也无济于事:

function check_input($value)
{
// Stripslashes
if (get_magic_quotes_gpc())
  {
  $value = stripslashes($value);
  }
// Quote if not a number
if (!is_numeric($value))
  {
  $value = "'" . mysql_real_escape_string($value) . "'";
  }
return $value;
}

这是我的php代码:

<?php
    error_reporting(0);
    require 'include/DB_Open.php';

    $RemedyTicketNo = $_POST['RemedyTicketNo'];
    $PhoneNumber = $_POST['PhoneNumber'];
    $Category2 = $_POST['Category2'];
    $Category3 = $_POST['Category3'];
    $Status = $_POST['Status'];
    $Createdate = $_POST['Createdate'];
    $Date = $_POST['Date'];
    $Severity = $_POST['Severity'];
    $BanType = $_POST['BanType'];
    $XiD = $_POST['XiD'];
    $Ticket = $_POST['Ticket'];

    if (isset($RemedyTicketNo)) 
    {
    $sql="INSERT into tbl_main (ars_no, phone_number, category_1, category_2, status, create_date, resolved_date, trouble_type_priority, ban_type, employee_id_name) 
          VALUES ('".$RemedyTicketNo."', '".$PhoneNumber."', '".$Category2."', '".$Category3."', '".$Status."', '".$Createdate."', '".$Date."', '".$Severity."', '".$BanType."', '".$XiD."')";
    $result=mysql_query($sql);

    header("Location: wireless_new.php");
    }

?>

PS..我是 php 和 sql 的新手,所以我还在努力学习使用 sqli ......

4

5 回答 5

3

所有字符串都应使用特定于数据库的函数进行转义。在你的情况下mysql_real_escape_string

如果您正在学习,最好从 MySQLi 开始,因为 MySQL 扩展自 PHP 5.5.0 起已弃用。它并不比你正在使用的更难。

于 2013-05-01T10:30:38.793 回答
2

使用查询参数或调用任何 php 等效项。转义引号是他们为您做的一件好事。

于 2013-05-01T09:58:00.893 回答
0

我能够通过将 mysql_real_escape_string 添加到具有“值”的字段来修复它

$RemedyTicketNo = $_POST['RemedyTicketNo'];
    $PhoneNumber = $_POST['PhoneNumber'];
    $Category2 = $_POST['Category2'];
    $Category3 = **mysql_real_escape_string** ($_POST['Category3']);
    $Status = $_POST['Status'];
    $Createdate = $_POST['Createdate'];
    $Date = $_POST['Date'];
    $Severity = $_POST['Severity'];
    $BanType = $_POST['BanType'];
    $XiD = $_POST['XiD'];
    $Ticket = $_POST['Ticket'];
于 2013-05-01T13:19:01.473 回答
0

如果正确转义,Mysqli 将很乐意接受单引号。但由于某种原因,您实际上并没有将任何功能应用于输入。所以,这是你唯一的问题。

另请注意,error_reporting 应始终为E_ALL,而不是 0

于 2013-05-01T10:11:07.527 回答
0

如果你正在使用

(所有书籍都可用)作为 $subject 并且您正在尝试插入 mysql

用这个

$subject=$_POST['subject'];
$disc_str = addslashes($subject);
"INSERT INTO table name (subject) value('$disc_str')";

它也适用于 Textarea 和 tinymce

于 2015-02-08T06:03:40.267 回答