【发布时间】:2015-11-26 11:07:31
【问题描述】:
在服务器上更新 php 之后,我的 mysql_query 出现了一些问题。您的代码中有 2 个函数在当前版本的 PHP 中已被弃用: mysql_fetch_array() mysql_query()
global $table_prefix, $wpdb;
// caching database query per comment
$ck_cache = array('ck_ips'=>"", 'ck_comment_id'=>0, 'ck_rating_up'=>0, 'ck_rating_down'=>0);
$table_name = $table_prefix . "comment_rating";
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name)
{
temckrating_install();
}
function temckrating_install() //Install the needed SQl entries.
{
global $table_prefix, $wpdb;
$table_name = $table_prefix . "comment_rating";
$sql = 'DROP TABLE `' . $table_name . '`'; // drop the existing table
mysql_query($sql);
$sql = 'CREATE TABLE `' . $table_name . '` (' //Add table
. ' `ck_comment_id` BIGINT(20) NOT NULL, '
. ' `ck_ips` text NOT NULL, '
. ' `ck_rating_up` INT,'
. ' `ck_rating_down` INT'
. ' )'
. ' ENGINE = myisam;';
mysql_query($sql);
$sql = 'ALTER TABLE `' . $table_name . '` ADD INDEX (`ck_comment_id`);'; // add index
mysql_query($sql);
// echo "comment_rating tables created";
$ck_result = mysql_query('SELECT comment_ID FROM ' . $table_prefix . 'comments'); //Put all IDs in our new table
while($ck_row = mysql_fetch_array($ck_result, MYSQL_ASSOC)) //Wee loop
{
mysql_query("INSERT INTO $table_name (ck_comment_id, ck_ips, ck_rating_up, ck_rating_down) VALUES ('" . $ck_row['comment_ID'] . "', '', 0, 0)");
}
}
function temckrating_comment_posted($ck_comment_id) //When comment posted this executes
{
global $table_prefix, $wpdb;
$table_name = $table_prefix . "comment_rating";
mysql_query("INSERT INTO $table_name (ck_comment_id, ck_ips, ck_rating_up, ck_rating_down) VALUES ('" . $ck_comment_id . "', '" . getenv("REMOTE_ADDR") . "', 0, 0)"); //Adds the new comment ID into our made table, with the users IP
}
// cache DB results to prevent multiple access to DB
function temckrating_get_rating($comment_id)
{
global $ck_cache, $table_prefix, $wpdb;
// return it if the value is in the cache
if ($comment_id == $ck_cache['ck_comment_id']) return;
$table_name = $table_prefix . "comment_rating";
$ck_sql = "SELECT ck_ips, ck_rating_up, ck_rating_down FROM `$table_name` WHERE ck_comment_id = $comment_id";
$ck_result = mysql_query($ck_sql);
$ck_cache['ck_comment_id'] = $comment_id;
if(!$ck_result) {
$ck_cache['ck_ips'] = '';
$ck_cache['ck_rating_up'] = 0;
$ck_cache['ck_rating_down'] = 0;
mysql_query("INSERT INTO $table_name (ck_comment_id, ck_ips, ck_rating_up, ck_rating_down) VALUES ('" . $comment_id . "', '', 0, 0)");
}
else if(!$ck_row = mysql_fetch_array($ck_result, MYSQL_ASSOC)) {
$ck_cache['ck_ips'] = '';
$ck_cache['ck_rating_up'] = 0;
$ck_cache['ck_rating_down'] = 0;
mysql_query("INSERT INTO $table_name (ck_comment_id, ck_ips, ck_rating_up, ck_rating_down) VALUES ('" . $comment_id . "', '', 0, 0)");
}
else {
$ck_cache['ck_ips'] = $ck_row['ck_ips'];
$ck_cache['ck_rating_up'] = $ck_row['ck_rating_up'];
$ck_cache['ck_rating_down'] = $ck_row['ck_rating_down'];
}
}
我尝试用 $wpdb->get_results 替换 mysql_query 但仍然出现错误
【问题讨论】:
-
$wpdb->get_results($sql); ...有什么问题???
-
问题是警告:mysql_query() 期望参数 1 为字符串
-
你必须使用 $wpdb->get_results 而不是 mysql_query。
-
仍然出现错误警告:ltrim() 期望参数 1 为字符串