PHP 7查询JSON数据类型mysql

标签 php mysql json laravel-5

我在 MySQL 数据库中有数据,表“用户”,列“属性”,json 类型如下:

{"hp": {"base": 10}}

我尝试使用 laravel 查询数据库 json 数据:

$users = Users::where('attributes->hp->base', 10)->get();

但它返回空结果。所以尝试使用以下方法获取查询:

$users = Users::where('attributes->hp->base', 10)->toSql();

它将查询显示为:

select * from users where attributes->"$.hp.base" = ?

现在,当我在 MySQL 命令行中使用该命令时,它会起作用

select * from users where attributes->"$.hp.base" = 10

所以,我尝试使用原生 php:

$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 个结果。代码有什么问题?

最佳答案

感谢 Saty 关于选择数据库的评论。所以原生 PHP 的答案是:

$conn = mysqli_connect($servername, $username, $password, $database);

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

所以 laravel eloquent 版本将是:

$users = Users::where('attributes->hp->base', DB::raw(10))->get();

关于PHP 7查询JSON数据类型mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205002/

相关文章:

php - 是否可以在一行中选择随机列?

javascript - 如何将phtml/php文件中的变量传递给js文件?

asp.net - IE8 getJSON缓存数据

php - 什么时候需要使用后期静态绑定(bind)?

php - 在数据库中存储巨大的数组

php - 我应该使用 EAV 模型吗?

mysql - 更改mysql中的auto_increment值

javascript - 如何在新窗口中打开所有推文链接?

php - 在 MySQL 中,我如何计算来自用户的消息?

php - 为 PHP echo 计算并显示不同列中的多个 mysql 行值