php - 从数据库表中选择所有 - 但在其中一列上使用函数

标签 php mysql mysqli pdo

这甚至可能吗,我这个问题的标题是否有意义?

我正在努力寻找从数据库 table 中获取所有内容的方法,但我需要运行 SQL 或 PHP 函数。

真正的简短例子是:

SELECT * FROM `table` WHERE `ip` = '$this->ip'

不过,我正在使用 INET_ATON() 来存储 IP 并使用 INET_NTOA() 来检索它。我也可以使用 PHP 的函数 ip2long()long2ip(),但我仍然不知道如何使用相同的 完成这样的事情查询?

SELECT `id`, INET_NTOA(`ip`) as `ip`, `points`
FROM `table` WHERE `ip` = INET_ATON('$this->ip')

这些都是手动定义的表格列,以达到我需要做的事情。但是......对于这个简单的项目来说,这样做似乎没问题,但是如果我有更多列并且只有其中一些或其中一个需要一些转换怎么办?

那么我怎样才能完成类似...(我知道这是无效的)

SELECT * FROM `table` WHERE `ip` = '$this->ip` BUT INET_NTOA(`ip`) as `ip`

除了这个问题,我还想知道INET_ATON() & INET_NTOA() 只是MySQL 函数 还是SQL 函数。因为我计划重写我的项目以使用 PDO 而不是 MySQLi 并且我不确定这些功能是否有效或者我应该依赖 PHP 的内置相同功能。

最佳答案

INET_ATON() & INET_NTOA() //所有这些都已弃用!请改用 inet_pton() 或 inet_ntop() !! 原因是它们不适用于 IPv6 地址,而且更多的互联网使用 IPv6 而不是 IPv4。

它们是同名的 PHP 和 SQL 函数,将 IP 地址转换为字符串,然后再返回。

关于php - 从数据库表中选择所有 - 但在其中一列上使用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33238922/

相关文章:

php - Laravel Eloquent - 将请求保存、更新和删除到相关表中

php - PHP中静态方法的缺点

php - 有两行时只从mysql读取一行

mysql - sql 将行分隔字符串的行转换为单独的行

php - 如何在 mysqli 查询后替换变量的值并绑定(bind)结果?

php - 无法使 PHP 和 MYSQLI 的下拉提要正常工作

php - 如何在 Yii2 中打开 HTTP 缓存?

php - 警告 file_get_contents() 无法打开流 : HTTP request failed! HTTP/1.0 402 需要付款

MYSQL:帮助连接三个表

javascript - 与复选框对话,将检查值传递到空选择框