Wordpress 在 wordpress 页面上弄乱了我的数据库调用?
Posted
技术标签:
【中文标题】Wordpress 在 wordpress 页面上弄乱了我的数据库调用?【英文标题】:Wordpress messing with my db calls on the wordpress pages? 【发布时间】:2011-08-04 00:32:53 【问题描述】:嘿,大家还好吗?我遇到了数据库冲突,需要一些帮助。
基本上,我有一个包含随机数据库字段的标题。没什么特别的。它在我模板的标题中,并且在非 WordPress 页面上运行良好。
$sql = "SELECT * FROM headerslogans ORDER BY RAND() LIMIT 1";
$result = mysql_query($sql);
while ($myrow = mysql_fetch_array($result))
echo $myrow['slogan'];
;
我正在使用相同的数据库、相同的用户名、相同的密码等。但是,我在应该回显的位置收到此错误....
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nobody'@'localhost' (using password: NO) in <dir name>
显然,wordpress 连接正在“覆盖”另一个(wordpress 工作完美)。但是,我也很困惑为什么它不起作用,尽管它使用相同的用户名和密码连接到同一个数据库。
有人可以帮我解决这个问题吗?
更新:发布的连接代码
$x = mysql_connect($server,$dbuser,$dbpass,true) 或死(mysql_error()); mysql_select_db($dbname,$x);
【问题讨论】:
你的 header.php 文件中有这段代码吗?如果是这样,你应该不那样做 这种代码应该放在插件中,或者至少放在你的functions.php中。 我明白你的意思。但我需要这段代码才能在网站的其他非 wordpress 驱动的部分上工作。此代码位于站点范围的 inc-header.php 包含文件中。无处不在,不仅仅是 wordpress。 你能贴出你的mysql连接代码吗?这就是问题所在,而不是sql语句。 @Ciaran - 当然。谢谢!就像我说的,这在非 Wordpress 页面上运行良好。谢谢您的帮助! $x = mysql_connect($server,$dbuser,$dbpass,true) 或死(mysql_error()); mysql_select_db($dbname,$x); 【参考方案1】:正如你所说,连接被覆盖,数据库选择是否也被覆盖?很可能实际上mysql_select_db()
是让你搞砸的事情。通过将您的原始连接设置为变量来修复它,并在有问题的 mysql_* 函数中引用它,例如:
$dbcnct = mysql_connect(...);
mysql_select_db('...', $dbcnct);
mysql_query('...', $dbcnct);
这也不应该影响您当前的设置。
【讨论】:
您可以直接在查询中指定数据库:SELECT fieldname FROM database.table ...
。选择默认数据库只是消除了明确指定数据库名称的需要。
没错,这将插入 OPs 当前设置,而无需更改所有查询...
感谢您提供的信息,但我已经尝试过了。我现在得到“警告:mysql_query():提供的参数不是 @NarfFlarf:您可以只使用 WordPress 查询来获取您的数据 --
$sql = "SELECT * FROM headerslogans ORDER BY RAND() LIMIT 1";
$result = $wpdb->get_results($sql);
foreach ($myrow as $result)
echo $myrow->slogan;
请参阅this WordPress Codex entry 以获取更多参考。
更新
那么您或许可以尝试的其他方法是拥有<img src="slogan.php" alt="">
和slogan.php
:
<?php
/* Instantiate own, non-WP MySQL connection */
/* Run query and retrieve image */
header("Content-type: image/jpeg");
echo file_get_contents('path/to/image/' . $image); // 'dynamic' image!
?>
【讨论】:
嗯嗯好主意!不过,让我把这把扳手扔进机器里。我到处都有代码,在很多不同的页面上,这使得调用数据库的传统方式。我真的很想避免改变所有这些,特别是因为我还没有那么精通 php 和 mysql 连接。 @NarfFlarf:查看我的更新答案,可能意味着对现有代码的修改更少。 我同意@stealthyninja 使用 wpdb 对象。我相信您还必须在文件顶部添加以下内容:以上是关于Wordpress 在 wordpress 页面上弄乱了我的数据库调用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 jQuery 不能在 WordPress 页面上运行?
php WordPress:注册Gravity Forms样式表,只在联系页面#snippet #WordPress上排队