2013-01-12 82 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

您需要顯示您的表定義以及這些變量的預期值以獲得進一步的幫助 –