CodeIgniter选择列到变量给出错误

时间:2015-02-23 07:11:58

标签: php mysql codeigniter mysqli

我在codeigniter

上使用了这个代码
$this->db->trans_begin();

$this->db->query("SET @clientID = {$client_id}, @amount = {$amount}, @gameID = {$game_id}, @tableID = {$table_id}, @tableName = '{$table_name}', @usedBalanceID = NULL");

$this->db->query("SELECT availableBalance INTO @availableBalance FROM client WHERE clientID = @clientID");

SELECT availableBalance INTO @availableBalance 给我一个错误说

Severity: Warning  --> mysqli_num_rows() expects parameter 1 to be mysqli_result;
system\database\drivers\mysqli\mysqli_result.php 37

但是使用返回没有错误

$this->db->query("SELECT @availableBalance := availableBalance FROM client WHERE clientID = @clientID");

任何人都可以解释为什么我在codeigniter上得到这个错误

但在laravel上使用代码时

SELECT availableBalance INTO @availableBalance FROM client WHERE clientID = @clientID

工作正常。

2 个答案:

答案 0 :(得分:3)

$this->db->trans_begin();

$this->db->query("SET @clientID = {$client_id}, @amount = {$amount}, @gameID = {$game_id}, @tableID = {$table_id}, @tableName = '{$table_name}', @usedBalanceID = NULL");

$this->db->query("SELECT availableBalance INTO @availableBalance FROM client WHERE clientID = @clientID");
  • 我刚注意到@availableBalance无处可寻,所以基本上它会抛出一个错误。

“SELECT @availableBalance:= availableBalance FROM client WHERE clientID = @clientID”;

  • 这样运行正常,因为@availableBalance像存储一样被使用并被定义/设置。

我创建了一个示例sql脚本来解释我的答案。希望能帮助到你!干杯!

sqlfiddle

答案 1 :(得分:0)

SELECT INTO 声明selects data from one table and inserts it into a new table。您收到错误是因为查询$this->db->query("SELECT availableBalance INTO @availableBalance FROM client WHERE clientID = @clientID");的SELECT部分​​正在返回false,因此没有可以在表@availableBalance中插入的值。

请检查client表,因为SQL无法在availableBalance列中找到clientID = @clientID的任何值。