1

tengo este script PHP donde hago una consulta insert en una BD mysql , lo que hago es declarar un objeto mysqli de forma global y luego desde una función hacer los insert , pero desde la función insertar me da error , me dice que no reconoce el objeto $mysqli

$servidor = "localhost";
$usuario = "root";
$password ="xxxx";
$basededatos = "xxxx";

$mysqli = new mysqli($servidor, $usuario, $password, $basededatos);
if ($mysqli->connect_errno) {
    echo "Falló la conexión con MySQL: (".$mysqli->connect_errno.") ".$mysqli->connect_error;
}


function insertar($name,$dni) {
$cadena = "update users set xxxxx";
$mysqli->query($cadena);
}
ilernet
  • 1,291
  • 1
  • 17
  • 38
  • 1
    donde haces el call a la function Insertar? puedes porfa add el codigo donde haces el llamado? – Jose Reynel Chaux Perez May 16 '18 at 16:02
  • 2
    agrega el llamado a dicha función call –  May 16 '18 at 16:06
  • 1
    La consulta `update users set xxxxx` no es válida, daría error de sintaxis. Y el objeto `$mysqli` debe ser pasado en parámetro a `insertar`, a no ser que lo tengas declarado como super global, lo cual no es recomendable. En realidad `global` no funciona como uno podría creer en PHP, [ver aquí, el punto **B** de la pregunta](https://es.stackoverflow.com/q/118062/29967), – A. Cedano May 16 '18 at 16:10

1 Answers1

5

Dentro de la función "insertar" no existe la variable $mysqli, puedes enviarla como parámetro o bien agregarla a la función como global, logrando así que dicho objeto exista en la función.

function insertar($mysqli, $name, $dni){
 $cadena = "update users set xxxxx";
 $mysqli->query($cadena);
}

o bien...

function insertar($name, $dni){
  global $mysqli;
  $cadena = "update users set xxxxx";
  $mysqli->query($cadena);
}

Fuente: http://php.net/manual/es/language.variables.scope.php

ErcikKtm
  • 66
  • 2