我有一个 thinkcmf 5开发的小网站, 需要访问到两个数据库, 其中默认数据库在/data/conf的目录下已经配置正确,并且网站基本功能可以使用。另外一个扩展数据库在同一服务器上,因此我在/app目录下的config.php 文件中添加了扩展数据库的连接信息(和默认数据库只有数据库名称的不同),扩展数据库名称为db_zhongwen。
目前要在后台一个PHP文件中,调用扩展数据库的一个自定义存储函数Hello('aa','bb')。但总是无法成功
代码如下:
$idom_proc="call Hello('aa','bb')";
$con=Db::connect("db_zhongwen");
$idion_result =$con->query($idom_proc);
return $idion_result;
注释: Hello函数只是一个单纯的字符串拼接函数,在MySQL中单独执行成功。 整体代码在 $idion_result =$con->query($idom_proc); 这一句就执行不下去了。请高手指教!
目前采用查询前在存储函数对象前加上数据库的名称, 但是返回值一直为空。
$idom_proc="select zhongwen.Hello('aa','bb')";
$idion_result =Db::query($idom_proc);
但是奇怪的是,一直返回为空。 不知是什么问题。
奇怪了,把程序放到其它目录下是可以正常执行的, 放到ThinkPHP中就不行。
根据你提供的信息,我认为可能是以下原因导致调用扩展数据库自定义函数失败:
请确认 Db::connect() 函数中传递的参数是否正确。在你的代码中,你传递了字符串 "db_zhongwen",但是请确认需要传递的参数应该是一个包含数据库连接信息的数组,包括数据库类型、主机地址、用户名、密码和数据库名称。可以参考默认数据库的连接信息进行设置。
请确认你调用的存储过程名称是否正确,并且存储过程需要的参数是否正确传递。你在提供的信息中没有提到存储过程的代码,如果存储过程中存在语法错误或逻辑错误也可能导致调用失败,需要进行检查和调试。
请确认你使用的数据库用户是否有权限调用该存储过程。可以进入数据库进行查看或者联系数据库管理员进行授权。
希望以上信息能够帮助你解决问题,如有问题可以进一步提问。