【发布时间】:2016-02-12 16:27:33
【问题描述】:
我在数据库中保存了一个似乎正确存储在 SQL Server 中的 json 字符串,但是在尝试获取数据时它只返回 json 字符串的一部分。
我正在使用 PDO 和 json_encode 来保存数据。 存储的json字符串长度约为1000个字符,table字段允许长度为4096。
获取结果:
$sql = "SELECT TOP 1 * FROM MyTable WHERE id = :id ORDER BY id DESC;";
$params = array(
":id" => $id
);
$sth = $this->db->prepare($sql);
$sth->execute($params);
$result = $sth->fetch(PDO::FETCH_ASSOC);
保存结果:
$json = json_encode($_POST);
$sql = "INSERT INTO MyTable(data) VALUES (:data);";
$params = array(
":data" => $data
);
$stmt = $this->db->prepare($sql);
$stmt->execute($params);
存储在 SQL Server 中的示例 Json:
{
"checkbox_1":"on",
"checkbox_2":"on",
"checkbox_3":"on",
"text_1":"my text",
"images":[
13685
],
"date":"11-11-2015"
}
返回的示例 Json:
{
"checkbox_1":"on",
"checkbox_2":"on",
"checkbox_3":"on",
"text_1
更新
看来返回的字符串长度总是:255
这可能是 SQL Server 配置还是 PDO?
【问题讨论】:
-
您确定字符串不超过数据库限制吗?
echo strlen($json); -
表/字段的编码是什么?我认为这可能是一个编码问题,您计算的是字符还是字节。
-
@Steve 字符串长度为 894,数据库限制为 4096
-
@JakeB。表的排序规则是 SQL_Latin1_General_CP1_CI_AS。
-
该字段是否使用
VARCHAR作为其类型?
标签: php sql sql-server pdo