PHP菜鳥在這里:我需要用$wpdb->update當前日期時間更新所有具有“NULL”值的數據庫行。這是當我直接插入 PHPMyAdmin 時可以使用的 MySQLUPDATE `mytable`SET `expired` = CURRENT_TIMESTAMP()WHERE (`id` > 1 AND `expired` IS NULL)使用$wpdb我發現我需要獲取所有需要過期的 ID,如下所示:$get_ids = $wpdb->get_results(" SELECT id FROM $database WHERE (`id` > 1 AND `expired` IS NULL)");所以現在我有一個 ID 數組,我的想法是將它們放在像$wpdb->update這樣的位置foreach($get_ids as $key => $value){ $data = array('expired' => $currentTime); $where = array('id' => $value); $wpdb->update( $database, $data, $where, ); print_r( $where );}print_r 返回 "Array( [id] => stdClass Object ( [id] => 34 ))Array( [id] => stdClass Object ( [id] => 38 ))但閱讀文檔我相信它需要更像這樣array('id' => $value)另外,這是我的錯誤日志中的PHP錯誤[30-Jul-2020 03:42:50 UTC] PHP 注意:wpdb::prepare 被 錯誤地調用。不支持的值類型(對象)。請參閱WordPress 中的調試以獲取更多信息。(此消息是在版本 4.8.2 中添加的。)位于 /Applications/MAMP/htdocs/myproject/wp-includes/functions.php 第 5167 行[2020 年 7 月 30 日 03:42:50 UTC] PHP 警告:mysqli_real_escape_string() 期望參數 2 為字符串,即第 1158 行 /Applications/MAMP/htdocs/myproject/wp-includes/wp-db.php 中給出的對象[30-Jul-2020 03:42:50 UTC] PHP 注意:wpdb::prepare 被 錯誤地調用。不支持的值類型(對象)。請參閱WordPress 中的調試以獲取更多信息。(此消息是在版本 4.8.2 中添加的。)位于 /Applications/MAMP/htdocs/myproject/wp-includes/functions.php 第 5167 行[2020 年 7 月 30 日 03:42:50 UTC] PHP 警告:mysqli_real_escape_string() 期望參數 2 為字符串,即第 1158 行 /Applications/MAMP/htdocs/myproject/wp-includes/wp-db.php 中給出的對象抱歉,它很長,但我想清楚地展示我已經嘗試過的內容,并清楚地了解我正在做的事情。
1 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
你想要$wpdb->get_col()而不是$wpdb->get_results(). 同樣的事情,但get_col返回一個簡單的值數組(因為我們知道您只返回一列),而get_results返回和對象數組,因為您可能會獲得多列。
或者你可以這樣做:
$where = array('id' => $value->id);
// - or -
$where = (array) $value;
但在這種情況下使用:
$get_ids = $wpdb->get_col("
SELECT id
FROM $database
WHERE (`id` > 1 AND `expired` IS NULL)
");
是正確的做法。
請參閱: https: //codex.wordpress.org/Class_Reference/wpdb
我相信您的 mysql 準備錯誤是由于您將錯誤的值傳遞給 where 子句并且無法為準備函數正確解析它。
- 1 回答
- 0 關注
- 141 瀏覽
添加回答
舉報
0/150
提交
取消