Переменная MySQL в запросе

У меня есть портал для арендаторов, когда мне нужно показать текущий баланс для каждой транзакции. Вот запрос, который я написал, который делает то, что мне нужно.

Проблема у меня в том, что она не работает в WordPress. Вот мой код:

if (is_user_logged_in()) { $user = wp_get_current_user(); $balance = $wpdb->query( $wpdb->prepare( set @csum := "SELECT current_balance FROM exp_ten WHERE tenant_number = . (int) $user->ID"; select tenant_number, transaction_amount, (@csum := @csum + transaction_amount) as narrative from exp_tran order by tenant_number; ) 

);

и вот ошибка, которую я получаю:

Ошибка анализа: синтаксическая ошибка, неожиданные «@», ожидающие «,» или «)» в /home/path-to-the-file.php в строке 165

Может ли кто-нибудь помочь, как изменить запрос, чтобы он был принят WordPress. Если я прав, проблема в том, что WordPress не принимает переменную mysql @csum.

Заранее спасибо за помощь.

См. Документацию для $wpdb->prepare() . Вам нужно передать String, но вы набираете set @csum непосредственно в параметре. Ваш код должен выглядеть так:

 if ( is_user_logged_in() ) { $user = wp_get_current_user(); $balance = $wpdb->query( $wpdb->prepare( "SET @csum := (SELECT current_balance FROM exp_ten WHERE tenant_number=%d); SELECT tenant_number, transaction_amount, (@csum := @csum + transaction_amount) as narrative FROM exp_tran ORDER BY tenant_number", $user->ID ) ); } 

У меня нет возможности проверить, так как у меня нет вашей базы данных, но это должно сработать.

Также обратите внимание, как я использовал второй аргумент $wpdb->prepare() для передачи идентификатора пользователя. Нет смысла прибегать к подготовке, если вы не собираетесь передавать переменные таким образом.