【发布时间】:2020-09-23 11:50:15
【问题描述】:
谁能帮助我正确的语法。我有一个产品代码的 JSON 数组,并希望将其传递给 mysql 以搜索每个 ID
["3300-0021-PC","PRIMA802","3633-6021\/4","3652-5023\/3","3652-5021\/3","3652-5022\/3","3652-5024\/3"]
我的 sql 查询
SELECT
p.id,
p.name FROM
p_product p WHERE
p.name IN ('3633-0002', '3633-0052')
AND p.deleted = 0
我想在 WHERE 子句中使用 JSON 数组。我可以更改字符串以使其工作,但如果有更有效/正确的方法来使用 JSON_EXTRACT 之类的 JSON 数组,我会徘徊。我正在使用 MYSQL 5.7。我看过mysql json where clause,但我的数组不是宾格数组,谢谢。
我已经尝试在我的代码中使用这种方法,如下所示
public function productsArray($api, $args)
{
$test = array("3300-0021-PC","PRIMA802","3633-6021/4","3652-5023/3","3652-5021/3");
$test = json_encode($test);
$db = $GLOBALS['db']->getConnection();
$result = [];
$rowData = [];
$query .= "SELECT
p.id,
p.name
FROM
p_product p
WHERE
JSON_SEARCH(".$test.", 'one', p.name) IS NOT NULL
AND p.deleted = ?";
$stmt = $db->executeQuery($query, array(0));
if ($stmt->rowCount() > 0) {
foreach($stmt->fetchAll() as $row) {
foreach ($row as $key => $val) {
$rowData[$key] = $val;
}
$result['records'][] = $rowData;
}
$result['Total'] = $stmt->rowCount();
return $result;
}
return false;
}
这是抛出一个 SQL 错误,在查询中使用它之前是否必须设置一个 json 数组?
【问题讨论】:
-
@Akina,谢谢你,'one' 是否告诉 sql 从数组的开头开始?