我忙於嘗試執行一組涉及使用臨時表的語句。如何在語句執行期間在php中保留臨時mysqli表格?
我的目標是創建臨時表,向其中插入值,然後對臨時表內容進行類似的比較。
這些語句在從RAW SQL執行時在phpmyadmin中完美工作,但我假設表格在我嘗試插入數據時不可用。
下面是我的PHP功能+ mysqli的執行代碼:
function SearchArticles($Tags){
global $DBConn, $StatusCode;
$count = 0;
$tagCount = count($Tags);
$selectText = "";
$result_array = array();
$article_array = array();
foreach($Tags as $tag){
if($count == 0){
$selectText .= "('%".$tag."%')";
}else {
$selectText .= ", ('%".$tag."%')";
}
$count++;
}
$query = "CREATE TEMPORARY TABLE tags (tag VARCHAR(20));";
$stmt = $DBConn->prepare($query);
if($stmt->execute()){
$query2 = "INSERT INTO tags VALUES ?;";
$stmt = $DBConn->prepare($query2);
$stmt->bind_param("s", $selectText);
if($stmt->execute()){
$query3 = "SELECT DISTINCT art.ArticleID FROM article as art JOIN tags as t ON (art.Tags LIKE t.tag);";
$stmt = $DBConn->prepare($query3);
if($stmt->execute()){
$stmt->store_result();
$stmt->bind_result($ArticleID);
if($stmt->num_rows() > 0){
while($stmt->fetch()){
array_push($article_array, array("ArticleID"=>$ArticelID));
}
array_push($result_array, array("Response"=>$article_array));
}else{
array_push($result_array, array("Response"=>$StatusCode->Empty));
}
}else{
array_push($result_array, array("Response"=>$StatusCode->SQLError));
}
}else{
array_push($result_array, array("Response"=>$StatusCode->SQLError));
}
}else{
array_push($result_array, array("Response"=>$StatusCode->SQLError));
}
$stmt->close();
return json_encode($result_array);
}
第一條語句執行完美,但第二條語句給我的錯誤:
PHP Fatal error: Call to a member function bind_param() on a non-object
如果這是一個錯誤與臨時表不存在,我如何保存這個表足夠長的時間來運行其餘的語句?
我曾嘗試使用:
$stmt = $DBConn->multi_query(query);
與所有查詢於一身,但我需要將數據插入到一個查詢和SELECT查詢中獲取數據。
任何幫助將不勝感激,謝謝!
燦爛,通過這個我注意到它去。非常感謝您的回覆。非常感謝。 – EpicJoker