strip_tags remove quitar para linea funcion etiquetas ejemplo ejecutar desde comandos php sql mysql mysqli

php - remove - Comandos fuera de sincronización; no puedes ejecutar este comando ahora



strip_tags wordpress (12)

Compruebe si está escribiendo todos los parámetros correctamente. Lanza el mismo error si la cantidad de parámetros definidos y luego pasados ​​a la función son diferentes.

Estoy tratando de ejecutar mi código PHP, que llama a dos consultas MySQL a través de mysqli, y aparece el error "Comandos fuera de sincronización; no se puede ejecutar este comando ahora".

Aquí está el código que estoy usando

<?php $con = mysqli_connect("localhost", "user", "password", "db"); if (!$con) { echo "Can''t connect to MySQL Server. Errorcode: %s/n". Mysqli_connect_error(); exit; } $con->query("SET NAMES ''utf8''"); $brand ="o"; $countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %"; if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $data = $con->query($countQuery) or die(print_r($con->error)); $rowcount = $data->num_rows; $rows = getRowsByArticleSearch("test", "Auctions", " "); $last = ceil($rowcount/$page_rows); } else { print_r($con->error); } foreach ($rows as $row) { $pk = $row[''ARTICLE_NO'']; echo ''<tr>'' . "/n"; echo ''<td><a href="#" onclick="updateByPk(/'Layer2/', /''' . $pk . ''/')">''.$row[''USERNAME''].''</a></td>'' . "/n"; echo ''<td><a href="#" onclick="updateByPk(/'Layer2/', /''' . $pk . ''/')">''.$row[''shortDate''].''</a></td>'' . "/n"; echo ''<td><a href="#" onclick="deleterec(/'Layer2/', /''' . $pk . ''/')">DELETE RECORD</a></td>'' . "/n"; echo ''</tr>'' . "/n"; } function getRowsByArticleSearch($searchString, $table, $max) { $con = mysqli_connect("localhost", "user", "password", "db"); $recordsQuery = "SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME, date_format(str_to_date(ACCESSSTARTS, ''%d/%m/%Y %k:%i:%s''), ''%d %m %Y'' ) AS shortDate FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE ''%?%'' ORDER BY str_to_date(ACCESSSTARTS, ''%d/%m/%Y %k:%i:%s'')" . $max; if ($getRecords = $con->prepare($recordsQuery)) { $getRecords->bind_param("s", $searchString); $getRecords->execute(); $getRecords->bind_result($ARTICLE_NO, $USERNAME, $ACCESSSTARTS, $ARTICLE_NAME, $shortDate); while ($getRecords->fetch()) { $result = $con->query($recordsQuery); $rows = array(); while($row = $result->fetch_assoc()) { $rows[] = $row; } return $rows; } } }

He intentado leer sobre esto, pero no estoy seguro de qué hacer. He leído sobre el resultado de la tienda y el resultado gratuito, sin embargo, estos no han hecho ninguna diferencia al usarlos. No estoy seguro exactamente en qué punto se está causando este error, y me gustaría saber por qué se está causando y cómo solucionarlo.

Siguiendo mis instrucciones de depuración, el primer bucle if de countQuery ni siquiera se está ingresando, debido a un error en mi sintaxis sql cerca de ''% ? %'' ''% ? %'' . Sin embargo, si selecciono * lugar de tratar de limitar en función de una cláusula LIKE, sigo recibiendo el comando de error de sincronización.


Creo que el problema es que estás haciendo una nueva conexión en la función y luego no la cierras al final. ¿Por qué no intentas pasar la conexión existente y volver a usarla?

Otra posibilidad es que vuelvas fuera del medio de un ciclo de bucle. Nunca completas esa búsqueda externa.


El problema es la biblioteca C del cliente MySQL, en la que se basan la mayoría de las API de MySQL. El problema es que la biblioteca C no admite la ejecución simultánea de consultas, por lo que todas las API creadas además de eso tampoco. Incluso si usa consultas sin búfer. Esta es una razón por la cual se escribió la API asíncrona de MySQL. Se comunica directamente con el servidor MySQL utilizando TCP y el protocolo wire admite consultas simultáneas.

Su solución es modificar el algoritmo para que no necesite tener ambos en progreso a la vez, o cambiarlos para usar consultas almacenadas, que es probablemente una de las razones originales para su existencia en la biblioteca C (la otra es proporcionar una especie de cursor).


Esto no está relacionado con la pregunta original, pero tuve el mismo mensaje de error y este hilo es el primer golpe en Google y me tomó un tiempo averiguar cuál era el problema, por lo que puede ser útil para otros:

NO estoy usando mysqli, todavía estoy usando mysql_connect. Tenía algunas consultas simples, pero UNA consulta provocó que todas las otras consultas fallaran dentro de la misma conexión.

Yo uso mysql 5.7 y php 5.6 tuve una tabla con el tipo de datos "JSON". Obviamente, mi versión php no reconoció el valor de retorno de mysql (php simplemente no sabía qué hacer con el formato JSON porque el módulo mysql incorporado era demasiado antiguo (al menos eso creo))

por ahora cambié el JSON-Field-Type a texto (por ahora no necesito la funcionalidad nativa mysql JSON) y todo funciona bien


Hoy tuve el mismo problema, pero solo cuando trabajo con un procedimiento almacenado. Esto hace que la consulta se comporte como una consulta múltiple, por lo que debe "consumir" otros resultados disponibles antes de realizar otra consulta.

while($this->mysql->more_results()){ $this->mysql->next_result(); $this->mysql->use_result(); }


Llamo a esta función cada vez antes de usar $ mysqli-> query Funciona también con procedimientos almacenados.

function clearStoredResults(){ global $mysqli; do { if ($res = $mysqli->store_result()) { $res->free(); } } while ($mysqli->more_results() && $mysqli->next_result()); }


No puede tener dos consultas simultáneas porque mysqli utiliza consultas sin búferes de forma predeterminada (para las declaraciones preparadas, es lo contrario para vanilla mysql_query ). Puede buscar el primero en una matriz y recorrerlo, o decirle a mysqli que $stmt->store_result() las consultas (usando $stmt->store_result() ).

Mira here para más detalles.


Para aquellos que las respuestas anteriores no ayudaron ... ¡aquí está lo que fue MI PROBLEMA!

el enlace param era "dinámico", así que tenía una variable que establece los parámetros de los datos para usar bind_param . Entonces esa variable estaba equivocada, pero en lugar de arrojar un error como "datos de param incorrectos" dice "fuera de sincronización bla bla bla", así que estaba confundido ...

¡Espero que haya ayudado a alguien!


Resolví este problema en mi aplicación C: así es como lo hice:

  1. Citando de los foros de mysql:

    Este error se produce cuando finaliza su consulta con un delimitador de punto y coma dentro de la aplicación . Si bien es necesario finalizar una consulta con un delimitador de punto y coma al ejecutarlo desde la línea de comandos o en el navegador de consultas, elimine el delimitador de la consulta dentro de su aplicación.

  2. Después de ejecutar mi consulta y mysql_store_result() los resultados [C API: mysql_store_result() ], mysql_store_result() posibles resultados pendientes que se producen a través de la ejecución de varias sentencias de SQL, como dos o más sentencias select (de forma consecutiva sin tratar con los resultados) .

    El hecho es que mis procedimientos no devuelven resultados múltiples, pero la base de datos no lo sabe hasta que ejecuto: [C API: mysql_next_result() ]. Hago esto en un bucle (por si fuera poco) hasta que devuelve un valor distinto de cero. Ahí es cuando el controlador de conexión actual sabe que está bien ejecutar otra consulta (guardo mis manejadores en la memoria caché para minimizar la sobrecarga de conexión).

    Este es el ciclo que uso:

    for(; mysql_next_result(mysql_handler) == 0;) /* do nothing */;

No sé PHP, pero estoy seguro de que tiene algo similar.


Si utiliza el conjunto de resultados Buffer o Unbuffered para obtener datos, primero debe borrar los datos recuperados de la memoria, una vez que haya obtenido todos los datos . Como no puede ejecutar otro procedimiento MYSQL en la misma conexión hasta que borre la memoria recuperada. Agregue la siguiente función a la derecha del script, por lo que resolverá el problema

$numRecords->close(); or $numRecords->free(); // This clears the referencing memory, and will be ready for the next MYSQL fetch

Referencia de la documentación de PHP


Yo uso CodeIgniter. Un servidor está bien ... este probablemente más viejo ... De todos modos,

$this->db->reconnect();

Arreglado.


para resolver este problema, debe almacenar los datos de los resultados antes de usarlos

$numRecords->execute(); $numRecords->store_result();

eso es todo