2015-09-14 25 views
1
使用MySQL變量

我想了解如何使用變量在MySQL:在外面的存儲過程

$query = " 
    SET @myid = '1234'; 
    SELECT * FROM `table1` WHERE `id` = @myid; 
"; 

,但我得到1

  • 我已經看過了就行了語法錯誤它指出這是正確的語法。
  • 我也搜索了堆棧,但大多數問題都基於 存儲過程。

MySQL變量僅限於存儲過程嗎?如果不是我做錯了什麼?

+4

您無法在單個query()調用中運行多個查詢。就這樣。改爲詢問(「set ...」)和查詢(「select ...」)。 –

+0

你能告訴我們你正在使用的代碼來執行這個SQL,你使用mysqli,pdo嗎? – cmorrissey

+0

它只是mysqli,再次看手冊馬克的評論是有道理的,因爲我所遵循的例子是從終端https://dev.mysql.com/doc/refman/5.0/en/user-variables.html – Edward

回答

0

使用mysqli_multi_query()

試圖與查詢在線使用變量拋出就行了語法錯誤1. 謝謝你馬克B.

SET @myid = '<?php echo $myid; ?>'; 
SELECT t.*, 
    CASE WHEN m.`dob` BETWEEN @uDateStart AND @uDateEnd 
    etc... 

我的解決方案是使用mysqli::multi_querymysqli_multi_query,像這樣:

$this -> db -> multi_query($sql); 
$i = 0; 
$querySelect = 1; //query 1 
do{ 
    if($result = $this -> db -> store_result()) { 
     if($i === $querySelect) { 
      while($row = mysqli_fetch_array($result)) { 
       $data[] = $row; 
      } 
      mysqli_free_result($result); 
     } 
    } 
    $i++; 
} while($this -> db -> more_results() && $this -> db -> next_result()); 

$querySelect防止不必要的返回結果集。