如果达到最大长度,是否删除SQL行中的最后一个单词?(PHP)


Remove Last Word in SQL row if maxlength is reached? (PHP)

我拥有的一个php脚本正在将XML文件中的数据提取到MySQL数据库中。

其设置如下:

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

$variablename和$variablename2都是从XML文件中提取的变量,并且具有不同的长度。

所以,我知道,如果我只是在处理PHP,我可以使用strlen或的变体(请参阅如何将PHP中的字符串截断为最接近特定字符数的单词?(,但我的sql数据库中的"columnname"不是变量。

"列名"仅限于字符。我在mySQL中将其设置为VARCHAR MAX=106——这很有效——

但是,当将其重新输出到我的web主机时,它会从SQL数据库中获取数据,该数据库在单词中间的最大长度截止处停止。

我想要它,这样如果它真的达到了最大长度,最后一个字就被删除了。

也许在向SQL表中输入时,可以做到这一点吗?

或者甚至可能在PHP文件中输出回我的web主机?,例如这里:

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

或者可能在这里的$params?

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

非常感谢!

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

演示