gpt4 book ai didi

php - Laravel 原始查询不返回结果

转载 作者:行者123 更新时间:2023-11-30 00:42:01 27 4
gpt4 key购买 nike

硬编码查询

$stock = DB::select("SELECT * FROM reports_finra WHERE symbol = ? ", array('CWCO'));     // works and returns valid result set

Array (
[0] => Array ( [query] => SELECT * FROM symbols [bindings] => Array ( ) [time] => 37.4 )
[1] => Array ( [query] => SELECT * FROM reports_finra WHERE symbol = ? [bindings] => Array ( [0] => CWCO ) [time] => 27.07 )

)

# result set when var_dump($stock)  ( [1]'s query )
array(11) {

[0]=> object(stdClass)#5939 (7) { ["date"]=> int(20140116) ["symbol"]=> string(4) "CWCO" ["id"]=> int(1498) }
[1]=> object(stdClass)#5940 (7) { ["date"]=> int(20140117) ["symbol"]=> string(4) "CWCO" ["id"]=> int(8515) }
[2]=> object(stdClass)#5941 (7) { ["date"]=> int(20140121) ["symbol"]=> string(4) "CWCO" ["id"]=> int(15526) }

...

}

动态绑定(bind)变量传递给查询

$symbol = $symbol->symbol;

echo $symbol;
echo '<br />';

$stock = DB::select("SELECT * FROM reports_finra WHERE symbol = ? ", array($symbol));

$query = DB::getQueryLog();
print_r($query);
echo '<br />';
var_dump($stock); exit;

结果

CWCO             // the result from echoing $symbol

Array ( // getQueryLog()
[0] => Array ( [query] => SELECT * FROM symbols [bindings] => Array ( ) [time] => 36.06 )
[1] => Array ( [query] => SELECT * FROM reports_finra WHERE symbol = ? [bindings] => Array ( [0] => CWCO ) [time] => 27.55 ) )

array(0) { } // var_dump($stock);

如您所见,当我将符号值作为硬编码值传递到查询中时,我得到了所需的结果集。但是,当我动态传递值时,查询返回一个空结果集。

我已经为此反复思考了很长一段时间,并且不知道如何进一步解决此问题。更令人困惑的是,这些确切的查询在我的开发环境中有效,但在我推送到生产环境中时却无效。

通过故障排除,在意识到当我传入原始的硬编码值时,我得到了一个有效的结果集之前,我确保了开发环境和生产环境之间只有较小的 PHP/MySQL 版本差异。我三次检查用户是否具有适当的数据库权限。而且,我还列出了我的日志文件。但这些实际上都无法帮助揭示这里实际出现的问题。

由于我最近才开始重新开始开发,并且只玩了 L4 一两周,我希望有更多经验的人能够看到是什么导致了这种情况(我有一种奇怪的感觉这将是一个 ID10T 错误..)。

我期待您提供任何建议和见解。

-- 编辑--

由于查询返回(空)结果(并且不抛出错误),因此就 MySQL 而言,该查询似乎“正在运行”。但是,无论出于何种原因,它都不会返回结果集。我不确定这是否与 PDO、Eloquent 或其他完全有关。这是对不相关表的基本 SELECT * 查询;不应该这么麻烦。

而且,我很困惑为什么其他 select 语句可以正常工作,但这个却不然。当然,我正在查询一个与模型无关的表(没有定义 DB/L4 关系;这是一个一次性的 Select 语句,以便进行一些基本的数学运算)。

不幸的是,在解决这个问题之前我无法继续......

最佳答案

我在问题中表示我认为这可能是 ID10T 错误,事实确实如此。

再次对其执行 var_dump($symbols) 并仔细观察后,我意识到每个 $symbols 后面都有一个尾随空格,它与中的任何内容都不匹配 table 。啊哈!因此,查询成功执行并始终返回正确的结果;去搞清楚。 ;)

有趣的是,我应该在使用 Laravel 的 http://laravel.com/docs/eloquent#accessors-and-mutators 将 $symbols 插入数据库表之前对它们进行修剪。正如#laravel 中出色的 AndreasLutro 所指出的。

关于php - Laravel 原始查询不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21693489/

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