2015-06-01 2 views
0

PHP-скрипт У меня есть извлечение данных из XML-файла в базу данных MySQL.Удалить последнее слово в строке SQL, если maxlength достигнут? (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 - и это работает -

Но при повторном выводе этого на мой веб-хост он берет данные из базы данных SQL, которая остановлена ​​на максимальное значение среза в середине слова.

Я хочу, чтобы это было так, что если оно достигает максимальной длины, последний wo rd просто удаляется.

Может ли это быть сделано, возможно, при вводе в таблицу SQL?

Или, возможно, даже в файле PHP выводя обратно на мой веб-хостинга ?, такие, как здесь:

$rs->data_seek(0); 
while($res = $rs->fetch_assoc()) { 
    $a_topic = array(
    "columnname" => $res["columnname"] 

или, возможно, в $ Params здесь?

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

Большое спасибо!

+0

бы себе представить, что это боян ... но собираюсь бросить там, что основные строковые функции, используемые в ссылке вы предоставили перевести почти любой язык программирования, а также SQL. 'str_replace()' -> 'replace()', 'strpos()' -> 'substring_index()' и т. д. https://dev.mysql.com/doc/refman/5.0/en/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 ($ string)> $ maxLength') – deathpote

+0

Спасибо за ответ. Когда я попытался объяснить, я бы сделал что-то подобное, но я смущен, потому что у меня нет строки $, на которую нужно иметь дело - только столбец MySQL. Вы говорите, чтобы преобразовать столбец в строку, если это возможно? – bbruman

+0

Вы не можете отрезать перед вставкой в ​​БД? или иначе вы можете перевести тот же алгоритм в SQL, я думаю, – deathpote

Смежные вопросы