2013-01-12 67 views
0

我的代码:PHP MySQL的插入文本

function sendMessage($client, $owner, $topic, $message, $send, $alliance, $player, $coor, $report) { 
      $time = time(); 
    $q = "INSERT INTO " . TB_PREFIX . "mdata values (0,$client,$owner,'$topic',\"$message\",0,0,$send,$time,0,0,$alliance,$player,$coor,$report)"; 
    return mysql_query($q, $this->connection); 
} 

当我写的消息是没有问题的。但是,如果我发送到mysql本 - >“转换到这个 - > /”

“ - > /”

我需要的代码解决这个问题。请帮助我。

+0

你是说你需要转义引号?您需要在这些字符串变量的_all_上使用'mysql_real_escape_string()',并验证数字字符实际上是数字值。这些字符串必须在查询中引用,与“$ topic''一样,在它们被转义后。 –

+3

尽管_real_解决方案的目的是开始使用支持预处理语句的API,如PDO或MySQLi,其中为您处理了转义。 –

+0

我不能使用pdo或mysqli,因为我的脚本完全是mysql。我需要简单的代码。谁可以写它? – user1972188

回答

0

试试这个

function sendMessage($client, $owner, $topic, $message, $send, $alliance, $player, $coor, $report) { 

    $client = mysql_real_escape_string($client); 
    $owner = mysql_real_escape_string($owner); 
    $topic = htmlentities($topic); 
    $message = htmlentities($message); 
    $send = mysql_real_escape_string($send); 
$alliance = mysql_real_escape_string($alliance); 
    $player = mysql_real_escape_string($player); 
    $coor = mysql_real_escape_string($coor); 
    $report = mysql_real_escape_string($report); 

     $time = time(); 

    $q = "INSERT INTO " . TB_PREFIX . "mdata values (0,'$client','$owner','$topic','$message',0,0,'$send','$time',0,0,'$alliance','$player','$coor','$report')"; 
    return mysql_query($q, $this->connection); 
    } 
+0

不要工作..和以前的代码一样 – user1972188

+0

Same .. still' - > \' – user1972188

+0

是什么使变量这个??并且你可以分享如何定义变量谁做这个东西? –

0

类似于其他有评论,你应该使用PDO,但经过varchar或其他字符串类型的字段时,只需使用mysql_real_escape_string

$q = "INSERT INTO " . TB_PREFIX . "mdata values (0,$client,$owner, 
    '" . mysql_real_escape_string($topic) . "', 
    '" . mysql_real_escape_string($message) . "', 
    0,0,$send,$time,0,0,$alliance, 
    $player,$coor,$report)"; 
+0

不工作... :( – user1972188

+0

您需要显示您的表定义以及这些变量的预期值以获得进一步的帮助 –