2017-05-13 37 views
-1

我想知道,如何通過MySQL表列PHP變量函數像 這個例子通MySQL的列到PHP函數變量

<?php 
function multi($type){ 
return $type*5; 
} 
$sql="INSERT INTO table_a (column_a) select '".multi(column_b)."' from table_b" 
?> 

感謝您的幫助。

+0

'Sql =「'是一個缺少'$'符號的錯字?你也沒有關閉這個語句,如果這是僞代碼,你需要使用一個正確的例子。 '$'會自動拋出一個不確定的常量警告。 –

+0

對不起,這是錯誤的 – user3744203

回答

0

你不能從mysql調用PHP操作(雖然不是真的,但我們正在討論如何構建一個全新的PHP SAPI和一個複雜的MySQL UDF或引擎 - 幾個月的工作已經在這些事情上有專長的人)。

最有效的解決方案是在MySQL中實現你的函數。隨着比如你提供:

DELIMITER $$; 

CREATE function multi(itype int) 
RETURNS int 
BEGIN 
    return itype*5; 
END 
$$ 

INSERT INTO table_a (column_a) 
SELECT multi(column_b) FROM table_b 
$$ 

但想必你想5.假設這個不能在MySQL做,那麼你需要提取數據到PHP,並創建INSERT語句做的東西比乘法更復雜有:

$res=mysqli_query($dbh, "SELECT column_b FROM table_b"); 
while ($r=mysqli_fetch_assoc($res)) { 
    $ins="INSERT INTO table_a(column_a) VALUES (" 
     . multi($r['column_b']) , ");"; 
    if (!mysqli_query($dbh, $ins)) { 
     die mysqli_error($dbh); 
    } 
} 
+0

非常感謝,它非常有用 – user3744203

0

在第一步,你應該有數據庫在你的代碼是這樣的連接: $db=mysqli_connect("database address","username","password","database_name"); 那麼你應該運行查詢:

$result = mysqli_query($db, {your_query_as_string});

那麼你可以使用結果的每一行是這樣的:

$row = mysqli_fetch_array($result);

每次運行這個$row = mysqli_fetch_array($result);時候,row變量代表每行。 這個例子會告訴你使用的所有行: while($row = mysqli_fetch_array($result) { $name = $row['name']; }

每個while cyclename變量設置爲數據庫中的每個名字列。當你達到最後的價值。這段時間將會退出。