我想執行一個查詢,我保存在我的數據庫這樣執行保存的查詢:我想在數據庫
ID | NAME | QUERY
1 | show_names | "SELECT names.first, names.last FROM names;"
2 | show_5_cities | "SELECT cities.city FROM city WHERE id = 4;"
這可能嗎? 我在PHP有點noob,所以plz解釋如果可能。
我想執行一個查詢,我保存在我的數據庫這樣執行保存的查詢:我想在數據庫
ID | NAME | QUERY
1 | show_names | "SELECT names.first, names.last FROM names;"
2 | show_5_cities | "SELECT cities.city FROM city WHERE id = 4;"
這可能嗎? 我在PHP有點noob,所以plz解釋如果可能。
如果我理解你正確,你的查詢保存在數據庫中的表中,你想執行這些。
問題分解下來:你有兩個任務做:
這是一個有點元,但MEH :)
警告:在PHP中mysql_
功能已被取消,可以在不法分子手中的危險。
<?php
if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
die('Could not connect to mysql');
}
if (!mysql_select_db('mysql_dbname', $link)) {
die('Could not select database');
}
$name = "show_5_cities"; // or get the name from somewhere, e.g. $_GET.
$name = mysql_real_escape_string($name); // sanitize, this is important!
$sql = "SELECT `query` FROM `queries` WHERE `name` = '$name'"; // I should be using parameters here...
$result = mysql_query($sql, $link);
if (!$result) {
die("DB Error, could not query the database\n" . mysql_error(););
}
$query2 = mysql_fetch_array($result);
// Improving the code here is an exercise for the reader.
$result = mysql_query($query2[0]);
?>
+1只是確保你可以相信正在進行的查詢這裏,在插入之前進行消毒。 – Orangepill
如果你沒有創建一個存儲過程/函數,你可以簡單地使用:
mysql_query("Call procedure_name(@params)")
那會工作。這裏的參考:http://php.net/manual/en/mysqli.quickstart.stored-procedures.php
查詢表得到查詢,然後執行該查詢,並通過成果循環和輸出領域
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$RequiredQuery = intval($_REQUEST['RequiredQuery']);
$sql = "SELECT `QUERY` FROM QueryTable WHERE ID = $RequiredQuery";
$result = mysqli_query($link, $sql);
if ($row = mysqli_fetch_assoc($result))
{
$sql = "SELECT `QUERY` FROM QueryTable WHERE ID = $RequiredQuery";
$result = mysqli_query($link, $row['QUERY']);
while ($row2 = mysqli_fetch_assoc($result))
{
foreach($row2 AS $aField=>$aValue)
{
echo "$aField \t $aValue \r\n";
}
}
}
?>
只需打開表,並在像
變量獲得個人查詢$data = mysql_query('SELECT * FROM <the Table that contains your Queries>');
while(($row = mysql_fetch_row($data)) != NULL)
{
$query = $row['Query'];
mysql_query($query); // The Query from the Table will be Executed Individually in a loop
}
如果要從表中執行單個查詢,則必須使用WHERE
子句選擇查詢。
*爲什麼*你有一個想法在數據庫中存儲查詢? –
@YourCommonSense將查詢存儲在數據庫中是創建用戶可定製報告系統的快速方法,前提是他們有自己想要運行的查詢。 – Dai
看來你正處於某種強烈的幻想之下。 –