Я использую эту функцию "get_mysql_query" для всех моих запросов, это помогает мне поддерживать чистоту кода.
Я не уверен, когда и если соединение с базой данных близко.
Закрывается ли соединение в конце функции, и $ WebResult является независимой переменной.
Я спрашиваю об этом, потому что у меня много спящих процессов и Aborted_clients, и я подумал, что это может бытьвременная связь между запросом и его закрытием.
function open_mysql_connection(){
global $openconn,$conn;
$servername = "p:1.1.1.1";
$username = "demo";
$password = "demo";
$dbname = "demo";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
/* change character set to utf8 */
$conn->set_charset("utf8");
$openconn = true;
}
function close_mysql_connection(){
global $openconn,$conn;
if ($openconn){
$conn->close();
$openconn = false;
}
}
function get_mysql_query($query,$prepare=NULL,$prepare_type=NULL){
global $openconn,$conn,$memcache,$LASTID;
if (!$openconn){
open_mysql_connection();
}
if ($prepare!=NULL){
$sql =$query;
$a_bind_params =$prepare;
$a_param_type =$prepare_type;
/* Bind parameters. Types: s = string, i = integer, d = double, b = blob */
$a_params = array();
$param_type = '';
$n = count($a_param_type);
for($i = 0; $i < $n; $i++) {
$param_type .= $a_param_type[$i];
}
/* with call_user_func_array, array params must be passed by reference */
$a_params[] = & $param_type;
for($i = 0; $i < $n; $i++) {
/* with call_user_func_array, array params must be passed by reference */
$a_params[] = & $a_bind_params[$i];
}
/* Prepare statement */
$stmt = $conn->prepare($sql);
if($stmt === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->errno . ' ' . $conn->error, E_USER_ERROR);
}
/* use call_user_func_array, as $stmt->bind_param('s', $param); does not accept params array */
call_user_func_array(array($stmt, 'bind_param'), $a_params);
/* Execute statement */
$stmt->execute();
// /* Store the result (to get properties) */
// $stmt->store_result();
/* Fetch result to array */
$result = $stmt->get_result(); // altenative: $stmt->bind_result($row_AcousticDB);
$LASTID = $stmt->insert_id;
$stmt->free_result();
$stmt->close();
close_mysql_connection();
return $result;
}else{
$result =$conn->query($query,MYSQLI_STORE_RESULT);
$LASTID = $conn->insert_id;
close_mysql_connection();
return $result;
}
};
$query_terms[]=$_GET["p"];
$prepare_type[]='i';
$query =" SELECT * from `tbl_post` where id = ? ";
$WebResult = get_mysql_query($query,$query_terms,$prepare_type);
if ($WebResult->num_rows > 0) {
while($row = $WebResult->fetch_assoc()) {
echo $row['ID'];
}
}