我在 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/