2015-06-01 58 views
0

我有一個PHP腳本是從XML文件中提取數據到MySQL數據庫。如果達到maxlength,則刪除SQL行中的最後一個單詞? (PHP)

它是建立如下:

$sql = "INSERT IGNORE INTO `tablename` (columnname) VALUES ('text text text text text text $variablename text text $variablename2 text text') 

$ VARIABLENAME和$ variablename2是從XML文件被提取這兩個變量,並有不同的長度。

所以,我知道,如果我只是處理PHP我可以使用strlen或變化(見How to Truncate a string in PHP to the word closest to a certain number of characters?但在我的SQL數據庫「列名」是不是一個變量。

而「列名」是什麼 我在mySQL中將此設置爲VARCHAR MAX = 106 - 並且工作原理 -

但是,當重新輸出到我的Web主機時,它將從SQL數據庫獲取數據,該數據庫在的最大長度截止中旬字。

我希望它這樣,如果它達到最大長度,最後禾rd剛剛被刪除。

會這樣做,也許輸入到SQL表時?

還是在PHP文件輸出回到我的虛擬主機?如這裏甚至可能:

​​ 在這裏到$ params

或可能?

$params = array(
    'status' => $share['columnname'], 

非常感謝!

+0

會想象這是一種欺騙......但要在那裏把那個基本字符串函數爲您提供翻譯成幾乎任何編程語言以及SQL鏈接中使用。 ''str_replace()' - >'replace()','strpos()' - >'substring_index()'等等... https://dev.mysql.com/doc/refman/5.0/zh-cn/string- functions.html – ficuscr

回答

0
function cut($string, $maxLength) 
{ 
    $revertString = strrev($string); 
    $spaceRevertedPos = strpos($revertString, ' ', strlen($string)-$maxLength); 
    $revertedCutString = substr($revertString, $spaceRevertedPos); 

    return strrev($revertedCutString); 
} 

DEMO

+0

(我沒有檢查輸入,只要確保'$ string'是一個字符串,'$ maxLength'一個int和'的strlen($字符串)> $ maxLength') – deathpote

+0

感謝您的答覆。正如我試圖解釋我會做這樣的事情,但我很困惑,因爲我沒有一個$字符串來處理 - 只有一個MySQL列。如果可能,你是說要將列轉換爲字符串嗎? – bbruman

+0

在插入數據庫之前不能剪切嗎?或者你可以在SQL中翻譯相同的算法我認爲 – deathpote

相關問題