簡體   English   中英

如何使用SQL查詢中的查詢進行查詢

[英]How to query using a query from an SQL query

好,標題太復雜了,讓我解釋一下。

我正在嘗試將SQL查詢插入到我的SQL數據庫中,例如

INSERT INTO sample_db(query) VALUES ('SELECT * FROM users WHERE id={$userID}')

然后,從另一個PHP文件中,我將執行以下操作:

mysqli_query($queryfromabove);

問題是PHP變量沒有通過。 (它存在於我稱之為的文件中)我知道這是非常不合常規的,並且可能不建議這樣做,但是有人知道有什么方法可以做到這一點嗎?

根據要求,這里是實際代碼:

  $sql="INSERT INTO awards(name,image,query,clm,type,number)    VALUES ('".$_POST['name']."','".$_POST['image']."','".$_POST['query']."','".$_POST['column']."','".$_POST['condition']."','".$_POST['number']."')";
    mysqli_query($conn,$sql);

我已經回顯了所有POSTS,並且知道它們具有正確的數據。 這里重要的POST變量是$ _POST ['query'],因為它包含:

SELECT * FROM crts WHERE id='$crtid'

然后,從另一個文件中(例如,草率的變量名,這是一個WIP):

    $that = mysqli_fetch_assoc(mysqli_query($conn,"SELECT * FROM awards WHERE id=2"));
echo $that['query'].'<br>';
$crtid = $_SESSION['crt']['id'];
$query = $that['query'];
$thisquery = mysqli_query($conn,$query);
$finally = mysqli_fetch_assoc($thisquery);
print_r($finally);

ID 2是我在所有帖子中插入的sql結果的ID。

使用准備好的語句。 將以下內容放入數據庫:

INSERT INTO sample_db(query) VALUES ('SELECT * FROM users WHERE id=?')

然后,當您要執行它時,首先准備它,將參數綁定到變量,然后執行它。

$stmt = mysqli_prepare($conn, $queryfromabove);
mysqli_stmt_bind_param($stmt, "s", $userID);
mysqli_stmt_execute($stmt);

如果您需要能夠替換任意變量,則可以使用preg_replace_callback將字符串中的所有{$variable}替換為相應全局變量的值。

$sql = preg_replace('/\{\$(\w+)\}/', function($matches) use ($conn) {
    return mysqli_real_escape_string($conn, $GLOBALS[$matches[1]]);
}, $queryfromabove);
mysqli_query($conn, $sql);

允許存儲SQL查詢字符串會使數據庫遭受惡意攻擊。 請考慮使用存儲過程-這是MySQL的示例。 http://dev.mysql.com/doc/connector-net/zh/connector-net-tutorials-stored-procedures.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM