php - MySQL Medoo 强制数据类型
问题描述
我目前正在尝试以特定顺序从我的 MySQL 数据库中获取行。
因此,我发现这样的查询很有用:
SELECT * FROM tbl_items WHERE id IN (130,129) ORDER BY FIELD(ID, 130,129)
当我直接在 MySQL 中运行它时,一切正常。
现在在 PHP 中,我使用数据库框架Medoo。
我在那里做的是运行这个查询:
$asservate = $database->query("SELECT *
FROM tbl_items
WHERE ID in (:ids)
ORDER BY FIELD(ID,:ids)",
[":ids" => intval($items)])
->fetchAll();
当我回显上次执行的查询时,此查询的结果如下:
SELECT * FROM tbl_items WHERE ID in ('129,130') ORDER BY FIELD(ID,'129,130')
所以这些值是作为字符串输入的,这似乎是问题所在。结果是,我只返回了第 129 行,没有其他的。
有什么想法可以强制 medoo 不输入值,'
或者如何强制 MySQL 仍然执行查询,即使'
有?
提前致谢!
编辑:
这是query
Medoo 的 -function 的代码:
public function query($query, $map = [])
{
if (!empty($map))
{
foreach ($map as $key => $value)
{
switch (gettype($value))
{
case 'NULL':
$map[ $key ] = [null, PDO::PARAM_NULL];
break;
case 'resource':
$map[ $key ] = [$value, PDO::PARAM_LOB];
break;
case 'boolean':
$map[ $key ] = [($value ? '1' : '0'), PDO::PARAM_BOOL];
break;
case 'integer':
case 'double':
$map[ $key ] = [$value, PDO::PARAM_INT];
break;
case 'string':
$map[ $key ] = [$value, PDO::PARAM_STR];
break;
}
}
}
return $this->exec($query, $map);
}
解决方案
推荐阅读
- html - 如何在查找功能期间将对象固定在 iOS 上的 Chrome 屏幕底部?
- php - 根据 laravel 现有列中的值添加新列
- sql - 计算列上的窗口函数
- angular - 量角器发生错误时如何打印elmentFinder的值(字符串)
- variables - arudino 有没有一种方法可以在它们通过串行连接时将值存储到不同的变量中?
- python - 如何使用 PyMongo 查找所有数据库的索引列表?
- couchdb - 由于修订,CouchDB 占用了大量空间
- python - 如何写入子目录 Python 2.7 中的文件?
- tensorflow - 验证集上的去噪自动编码器给出了不好的结果,甚至对于训练图像在实例中随机噪声
- python - 如何解决 FileNotFoundError: [Errno 2] No such file or directory for Python 3.7/Mac