mysqli_query() espera al menos 2 parámetros, 1 dado
Este mysqli_query
comando 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?
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)");
Del manual
Procedural style
mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
Notarás las variables $link
y $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.
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.
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_query
espera 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 $mysqli
y 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, INSERT
por 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();
mysqli_query
Excepto 2 parámetros, la primera variable es la mysqli_connect
variable 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)");