gpt4 book ai didi

mysql - 一些 sql 查询在终端中工作,但在 Drupal 6 中不能使用 db_query() 函数为什么..?

转载 作者:行者123 更新时间:2023-11-29 01:23:49 24 4
gpt4 key购买 nike

我有以下名为“test”的 mysql 表。

enter image description here

假设它有如下数据,

enter image description here

现在我想获取用户的年龄,为此我使用以下查询..

SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(DOB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(DOB, '00-%m-%d')) AS age from test where user_name = 'akshaynhegde';

它有效并返回 21 岁。(这是我在终端中运行查询时的结果)

但是,当我在 Drupal 6 中使用以下代码时,它什么也没有返回...!!

    global $user;
$uname = $user->name;

$sql = "SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(DOB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(DOB, '00-%m-%d')) AS age from test where user_name = '%s'";

$age = db_result(db_query($sql,$uname));

我尝试了所有的可能性,例如使用 db_fetch_array()db_fetch_object() 并单独执行 $result = db_query($sql,$uname) 然后将 $result 传递给 db_result()..

但是没有任何效果..!为什么..????

好吧,仅供引用,其他简单的查询也有效。例如以下,它有效。

$sql = "select DOB from test where user_name = '%s'";
$dob = db_result(db_query($sql,$uname));

最佳答案

我没有使用 Drupal 或 PHP 的经验,但我确定您的问题是 %Y%m%d 你的查询字符串中有。你需要转义那些所以只剩下 %s。

根据 %d modifier in db_query not wanted你可以通过写两个 % 而不是一个来逃避它们。

所以你的查询字符串应该是这样的:

$sql = "SELECT DATE_FORMAT(NOW(), '%%Y') - DATE_FORMAT(DOB, '%%Y') - (DATE_FORMAT(NOW(), '00-%%m-%%d') < DATE_FORMAT(DOB, '00-%%m-%%d')) AS age from test where user_name = '%s'";

关于mysql - 一些 sql 查询在终端中工作,但在 Drupal 6 中不能使用 db_query() 函数为什么..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9256263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com