【问题标题】:Ampersand in mySQL query cuts off remaining valuemySQL 查询中的 & 号会截断剩余值
【发布时间】:2015-02-18 07:50:11
【问题描述】:

每当我尝试插入包含与号 (&) 的文本时,与号以及在它被截断后出现的剩余文本。

$int = 0; $string = "You & I!";

$sql = "INSERT INTO `table` VALUES(?,?);";
$prepare = $connect -> prepare( $sql );
$prepare -> bind_param( "is", $int, $string );

// ETC.

即使我逃脱(我讨厌它,因为它在引号中添加了多余的仰泳):

$string = $connect -> real_escape_string( $string );

只有You 会被插入到表中。该字段设置为VARCHAR(100)

我无法事先将 & 符号转换为 HTML 实体 (&),因为 WIN32 应用程序也使用该数据库。让 WIN32 应用程序将实体转换为普通字符是我目前无法控制的事情。

我做错了什么?

【问题讨论】:

  • 你能在“bind_param”行之后写下“$prepare->queryString”的输出吗
  • 应该在bind_param()之前还是之后赋值?
  • 赋值似乎没有问题。这段代码似乎是正确的。请分享 $prepare->queryString 的结果,看看您的查询是否构建正确。
  • 我正在努力。有趣的是;尽管代码完全相同,但它不会在另一个脚本中执行此操作。
  • 你的 varchar 字段在数据库中有多长?

标签: php mysql mysqli


【解决方案1】:

我知道你不能在你的数据库中使用&,但是如果你尝试一下,它会起作用吗?目前尚不清楚您的 PHP 应用程序是如何连接到 MySQL 的,但如果它是 RESTful 的,那么我怀疑 & 符号被解释为分隔符。

【讨论】:

  • 该字段被切断,因为数据是通过 XHR 作为查询字符串发布的。愚蠢的我。当然,使用 FormData() 对象发布解决了这个问题。但是,无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2018-10-12
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多