mysqli_query() espera al menos 2 parámetros, 1 dado

Resuelto Joe Winfield asked hace 54 años • 0 respuestas

Este mysqli_querycomando produce el siguiente error

mysqli_query("INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)"); 

Advertencia: mysqli_query() espera al menos 2 parámetros, 1 proporcionado en

¿Qué significa este mensaje de error y cómo se puede solucionar?

Joe Winfield avatar Jan 01 '70 08:01 Joe Winfield
Aceptado

Debe especificar la conexión que realizó a su base de datos en algún lugar anterior de su página. Deberías poner esa variable en la consulta. Supongamos que creó una variable llamada $con. Entonces tu código debería ser así.

mysqli_query($con,"INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)"); 
RonnyRules avatar Nov 14 '2013 11:11 RonnyRules

Del manual

Procedural style

mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

Notarás las variables $linky $query.

Esto significa que debe pasar a la función un recurso de enlace mysqli válido, así como la consulta que desea realizar. Esto le permite a la función saber qué conexión establecida con el servidor usar.

Se puede crear un recurso de enlace usando:

Solo estilo de procedimiento: un identificador de enlace devuelto por mysqli_connect() o mysqli_init()

y se puede encontrar un ejemplo de cómo hacerlo en la página del manual antes mencionada.

Ben Swinburne avatar Nov 09 '2011 23:11 Ben Swinburne

Parece que estás confundiendo mysql_query con mysqli_query. El primero acepta la declaración sql como primer parámetro, mientras que el segundo espera un identificador de enlace (creado por Mysqli::connect) como primer parámetro y la declaración como segundo.

Las dos extensiones no son compatibles entre sí. Le sugiero que elija uno, lea las páginas del manual sobre cómo conectarse, ejecutar consultas, etc., y olvide que el otro existe. Depende de usted cuál elija, mysqli tiene más funciones pero, como resultado, es más complicado.

erm410 avatar Nov 10 '2011 00:11 erm410

Si recibe alguno de los siguientes errores:

mysqli_query() espera al menos 2 parámetros, 1 dado

mysqli_select_db() espera exactamente 2 parámetros

mysqli_real_escape_string() espera exactamente 2 parámetros

Significa que no has pasado el parámetro obligatorio a estas funciones. Las funciones de estilo procesal de MySQLi esperan que el primer parámetro sea un enlace de conexión MySQLi válido.

Por ejemplo, mysqli_queryespera un enlace de base de datos como primer argumento y la consulta SQL real como segundo argumento.

Suponiendo que tenga este código de conexión o uno similar en algún lugar al comienzo de su secuencia de comandos.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect($host, $user, $pass, $db);
mysqli_set_charset ($mysqli, 'utf8mb4');

Puede utilizar el enlace de conexión guardado $mysqliy pasarlo como primer argumento.

mysqli_query($mysqli, "INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)"); 

La mayoría de las funciones de procedimiento de mysqli requieren que la conexión se pase como argumento. Sin embargo, una opción más sencilla sería cambiar al estilo orientado a objetos. En programación orientada a objetos, llama al método en el objeto pasando solo el SQL como argumento único.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli($host, $user, $pass, $db);
$mysqli->set_charset('utf8mb4');

$mysqli->query("INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)"); 

¡Advertencia!

Debería utilizar declaraciones preparadas parametrizadas en lugar de crear sus consultas manualmente. mysqli_query()solo debe utilizarse cuando no esté pasando ninguna entrada a su SQL. Siempre que desee pasar entradas, como es el caso, INSERTpor ejemplo, debe utilizar el enlace de parámetros. Puedes reemplazar tu mysqli_query()llamada con:

$stmt = $mysqli->prepare('INSERT INTO `counter`.`hits` (`page_hits`) VALUES (?)');
$stmt->bind_param('s', $hits);
$stmt->execute();
Dharman avatar Nov 03 '2019 22:11 Dharman

mysqli_queryExcepto 2 parámetros, la primera variable es la mysqli_connectvariable equivalente, la segunda es la consulta que usted ha proporcionado

$name1 = mysqli_connect(localhost,db_username ,db_pswd ,db_name );

$name2 = mysqli_query($name1,"INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)");
Shanaka WickramaArachchi avatar Jun 10 '2018 13:06 Shanaka WickramaArachchi