mysql - How to keep temporary mysqli table available in php during statement execution? -


i busy trying execute set of statements involve use of temporary table.

my goal create temporary table, insert values , comparison of temporary tables contents table.

these statements working in phpmyadmin when executed raw sql, i'm assuming table not available when try insert data.

below code php function + mysqli execution:

function searcharticles($tags){     global $dbconn, $statuscode;     $count = 0;     $tagcount = count($tags);     $selecttext = "";     $result_array = array();     $article_array = array();      foreach($tags $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 tags values ?;";         $stmt = $dbconn->prepare($query2);         $stmt->bind_param("s", $selecttext);         if($stmt->execute()){              $query3 = "select distinct art.articleid article art join tags t on (art.tags 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); } 

the first statement executes perfectly, second statement gives me error of:

php fatal error:  call member function bind_param() on non-object 

if error temp table not existing, how preserve table long enough run rest of statements?

i have tried use:

$stmt = $dbconn->multi_query(query); 

with queries in one, need insert data 1 query , data select query.

any appreciated, thank you!

this not issue temporary table. should remain throughout same connection (unless resets timeout, not sure part).

the error $stmt non-object. means query invalid (syntax error), mysqli refused create instance of mysqli_stmt , returned boolean instead.

use var_dump($dbconn->error) see if there errors.

edit: noticed query $query2 insert tags values ? (the ; redundant anyway). if becomes string "text", become insert tags values "text". sql syntax error. should wrap ? (), becomes insert tags values (?).

in conclusion, change line:

$query2 = "insert tags values ?;"; 

to:

$query2 = "insert tags values (?);"; 

also note don't need ; terminate sql statements passed mysqli::prepare.


Comments

Popular posts from this blog

Hatching array of circles in AutoCAD using c# -

ios - UITEXTFIELD InputView Uipicker not working in swift -

Python Pig Latin Translator -