mysql不接受撇号'

时间:2013-05-01 09:56:41

标签: php sql

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

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");
    }

?>

P.S ...我是php和sql的新手,所以我还在尝试学习使用sqli ...

5 个答案:

答案 0 :(得分:3)

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

如果您正在学习,最好从MySQLi开始,因为自PHP 5.5.0起不推荐使用MySQL扩展。这并不比你正在使用的那个困难。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我能够通过添加mysql_real_escape_string来修复它,该字段具有'value

$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'];

答案 4 :(得分:0)

如果您正在使用

(所有书都可用)作为$ subject,你试图插入到mysql

使用此

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

它在Textarea中也适合我使用tinymce