我在MYSQL中創建了一個存儲過程。我將6個輸入傳遞給存儲過程。我有260列有列名finewt_1,finewt_2,finewt_3 .... finewt_260。在存儲過程中傳遞列字段
我的存儲過程是:
Create procedure GetImg($r35 double,
r36 double,
$r37 double,
r38 double,
$r39 double,
r40 double)
begin
select img_id,img_path,
((pow((r36-finewt_$r35),2))+(pow((r38-finewt_$r37),2))+(pow((r40-finewt_$r39),2))) as distance from tbl_fine
end
當我嘗試從PHP中調用這個存儲過程,它給了我一個錯誤說finewt_ $ R35沒有找到。我想做這樣的計算,如果假設$ r35 = 50我想(r36-finewt_50)。我怎樣才能做到這一點?這只是我的sql語句的一小部分,我必須爲30,000多個圖像執行此操作,所以我不想使用另一個select語句。我怎麼解決這個問題?
我嘗試使用動態SQL還我收到錯誤消息:
Unknown column 'finewt_13' in 'field list'
我的動態SQL是:
Create procedure GetImg($r35 double,
r36 double,
$r37 double,
r38 double,
$r39 double,
r40 double)
begin
Set @s=CONCAT('select img_id,img_path,
((pow((r36-',finewt_$r35,'),2))+(pow((r38-',finewt_$r37,'),2))+(pow((r40-finewt_$r39),2))) as distance from tbl_fine');
PREPARE stmt FROM @s;
EXECUTE stmt;
end
當我試試這個:
CONCAT(......(pow((r36-finewt_',$r35,'),2))+(pow((r38-finewt_',$r37,')),2)+(pow((r40-finewt_',$r39,'),2)).....
我得到的錯誤:
Incorrect parameter count in the call to native function 'pow'
什麼做在PHP中,而不是在一個存儲過程 – 2013-05-02 07:50:45
從PHP我能做到這一點,但我試圖做它使用存儲過程,所以 – user1583647 2013-05-02 07:54:48