使用 MySQL 选择时截断字符串

Posted

技术标签:

【中文标题】使用 MySQL 选择时截断字符串【英文标题】:Trunction of string when using MySQL select 【发布时间】:2012-08-25 10:20:48 【问题描述】:

我使用 mysql select 提取存储在我的数据库中的文本,以便将其显示在表单中以便可以对其进行编辑。

当表单设置为数据库中保存的字符串时,在第一个空格处被截断,因此“Foo Bar”将显示为“Foo”。使用标签时不会发生这种情况。

我已确保文本字段足够大以容纳整个字符串,并且章程的数量不受限制。

整个单词都存储在数据库中,不会发生截断。我将类型设置为 varchar(30),它有足够的空间来存储整个单词。我也尝试将类型更改为文本,但仍然有问题。

我无法在任何地方找到解决方案,有人知道为什么会发生这种情况吗?

 <?php echo "<input type=\"text\" name=\"title[" . $row["id"] . "]\" value=" . $row["title"] . ">"; ?>

【问题讨论】:

很难判断该错误可能来自何处,因为您尚未发布任何代码。通常这不会发生就是我能说的。 请向我们提供SSCCE。没有任何代码很难帮助你。 【参考方案1】:

您应该提供从您的 php 页面生成的 html 示例。很可能,您的值字符串没有被引用,例如您的 HTML 表单如下所示:

<input type=text value=Foo Bar>

而不是

<input type=text value="Foo Bar">

这将产生您所看到的效果


更新:根据您在评论中的示例,您确实缺少引号:

有问题的旧代码(value 属性值周围缺少引号)

<?php echo "<input type=\"text\" name=\"title[" . $row["id"] . "]\"
  value=" . $row["title"] . ">"; ?>

固定代码

<?php echo "<input type=\"text\" name=\"title[" . $row["id"] . "]\"
 value=\"" . $row["title"] . "\">"; ?> 

请注意,您已经正确引用了 name 属性,但没有正确引用 value

【讨论】:

我只是看了一下,它没有被引用。使用 php 回显时很难分辨。【参考方案2】:

没有相关代码,这只是一个猜测,但是你是在设置表单输入值属性时不使用引号吗?

例如,你这样做吗?

<input type="text" value=<? echo $value; ?> name="formInput" />

而不是正确的语法,这是什么?

<input type="text" value="<? echo $value; ?>" name="formInput" />

【讨论】:

以上是关于使用 MySQL 选择时截断字符串的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 从使用 UDF 的子查询中截断字符串

8.Mysql数据类型选择

选择语句上的“字符串数据,右截断”警告

MySQL如何防止字符串截断[重复]

当字符串长于列长度定义时,如何在存储字符串时静默截断字符串?

MySQL 太长 varchar 截断/错误设置