首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP 7查询JSON数据类型mysql

PHP 7查询JSON数据类型mysql
EN

Stack Overflow用户
提问于 2016-07-05 21:39:35
回答 2查看 1.1K关注 0票数 2

我在MySQL数据库中有数据,表'user',列'attributes‘,json类型如下:

代码语言:javascript
复制
{"hp": {"base": 10}}

我尝试使用laravel查询数据库json数据,如下所示:

代码语言:javascript
复制
$users = Users::where('attributes->hp->base', 10)->get();

但是它返回空的结果。因此,我尝试使用以下命令来获取查询:

代码语言:javascript
复制
$users = Users::where('attributes->hp->base', 10)->toSql();

它向我展示了如下查询:

代码语言:javascript
复制
select * from users where attributes->"$.hp.base" = ?

现在,当我在MySQL命令行中使用该命令并执行以下命令时,它可以正常工作

代码语言:javascript
复制
select * from users where attributes->"$.hp.base" = 10

因此,我尝试使用原生php:

代码语言:javascript
复制
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = 'select * from users where attributes->"$.hp.base" = 10';
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        var_dump($row);
    }
} else {
    echo "0 results";
}

mysqli_close($conn);

它仍然显示0个结果。代码有什么问题?

EN

回答 2

Stack Overflow用户

发布于 2016-07-06 21:02:28

给萨蒂关于选择数据库的评论。所以原生PHP的答案是:

代码语言:javascript
复制
$conn = mysqli_connect($servername, $username, $password, $database);

现在对于laravel版本,根据https://github.com/laravel/framework/issues/13232,它需要有DB::raw()

因此,laravel雄辩的版本将是:

代码语言:javascript
复制
$users = Users::where('attributes->hp->base', DB::raw(10))->get();
票数 1
EN

Stack Overflow用户

发布于 2016-07-05 21:43:33

您好,请按如下所示更改您的查询

代码语言:javascript
复制
$sql = 'select * from users where attributes->"'.$.hp.base.'" = 10';
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38205002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档