2015-12-10 72 views
0

如何插入下面的字符串到MySQL:插入/更新MySQL來LONGTEXT Coulmn

$myValue ouputs: [Hey, this is a multi text file that has special characters like this ' and this '' and this ,,"", and this ''' and this '''' and this [email protected]$ and whatever] 

但下面不會監守的特殊字符的工作:

$sql = "UPDATE `mytable` SET NEWS=('$myValue') WHERE _id='1'"; 

我不想手動逸出每chacarter(如添加一個「之前每」)

更新/插入應該應在開始[和結束](如在$ myvalue的看出)

EDIT(mysqli的)

$_myValue = mysqli_real_escape_string($myValue); 

    $conn = new mysqli($servername, $username, $password, $dbname); 

    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "UPDATE `mytable` SET NEWS='$_myValue' WHERE _id='1'"; 


     if ($conn->query($sql) === TRUE) { 
      echo "Record updated successfully"; 
     } else { 
      echo "Error updating record: " . $conn->error; 
     } 
+0

你用什麼語言來生成輸出/ push到db? – atoms

+0

Android AsyncTask – user3560827

回答

1

從你的代碼的語法我假設PHP是用來提交查詢到MySQL。

如果你只是想傳遞給一個字段的字符串變量轉義特殊字符,然後用

如果你正在尋找一個更通用的解決方案獲得sql注入,然後考慮使用準備的語句。請參閱this landmark SO topic關於如何防止在php-mysql環境中進行SQL注入。

+0

我修改了我的問題,我使用mysqli,但escape_string $ _myValue返回''(無),而$ myValue在轉換前返回數據。 – user3560827

+0

好的,我包括連接,escapestring ..讓我看看這是如何工作,虐待提供反饋 – user3560827

0

如果您使用PHP,你可以看看使用PDO;

$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 

$sql = "UPDATE `mytable` SET NEWS=:myValue WHERE _id=1"; 
$st = $conn->prepare($sql); 
$st->bindValue(":myValue", $myValue, PDO::PARAM_STR); 
$st->execute(); 

這將輸入存儲在$myValue中的所有數據。我也會考慮清理輸入。