Звоните в функцию членства bindParam () на необъекте

Сабля Quiero qué está fallando en mi código, necesito вставка Лос datos, una основывает de datos, подставляет pdo параграф evitar inyecciones SQL. Польза Ayuda por, число les dejo el error que me:

(!) КРИК: Ошибочное подавление проигнорировало для(!) фатальной ошибки: Звоните в функцию членства bindParam () на необъекте в C:\wamp\www\Santiago Casas\ext\inmobiliaria\panel\validate\propiedad.php на строке 616

//El archivo de conexion

<?php 

  $servername = "127.0.0.1";

  $username = "root";

  $password = "";
  
  $dbname = "santiago_casas";


  // Create connection
  $mysqli = new mysqli($servername, $username, $password, $dbname);



 ?>

<?php 

require_once '../inc/session.php';

?>
<?php 

	require_once '../inc/conexion.php';

//-------------------------------------//


$titulo = $_POST['titulo'];

$descripcion = $_POST['descripcion'];

$operacion = $_POST['operacion'];

$tipo = $_POST['tipo'];

$habitaciones = $_POST['habitaciones'];

$banos = $_POST['banos'];

$metros = $_POST['metros'];

$ubicacion = $_POST['ubicacion'];

$direccion = $_POST['direccion'];

$telefono = $_POST['telefono'];

$precio = $_POST['precio'];

$usuario = $_POST['usuario'];

$inmobiliaria = $_POST['inmobiliaria'];

$moneda = $_POST['moneda'];


// Protejemos los datos contra inyecciones SQL


$titulo = $mysqli->real_escape_string($titulo);

$descripcion = $mysqli->real_escape_string($descripcion);

$operacion = $mysqli->real_escape_string($operacion);

$tipo = $mysqli->real_escape_string($tipo);

$habitaciones = $mysqli->real_escape_string($habitaciones);

$banos = $mysqli->real_escape_string($banos);

$metros = $mysqli->real_escape_string($metros);

$ubicacion = $mysqli->real_escape_string($ubicacion);

$direccion = $mysqli->real_escape_string($direccion);

$telefono = $mysqli->real_escape_string($telefono);

$precio = $mysqli->real_escape_string($precio);

$usuario = $mysqli->real_escape_string($usuario);

$inmobiliaria = $mysqli->real_escape_string($inmobiliaria);

$moneda = $mysqli->real_escape_string($moneda);


 





$sentencia = $mysqli->prepare("INSERT INTO propiedades (titulo, descripcion, operacion, tipo, habitaciones, banos, m2, ubicacion, direccion, telefono, precio, usuario, inmobiliaria, moneda, imagen1, imagen2, imagen3, imagen4, imagen5, imagen6, imagen7, imagen8, imagen9, imagen10, imagen11, imagen12) 

	VALUES (:titulo, :descripcion, :operacion, :tipo, :habitaciones, :banos, :metros, :ubicacion, :direccion, :telefono, :precio, :usuario, :inmobiliaria, :moneda)");

$sentencia->bindParam(':titulo', $titulo);

$sentencia->bindParam(':descripcion', $descripcion);

$sentencia->bindParam(':operacion', $operacion);

$sentencia->bindParam(':tipo', $tipo);

$sentencia->bindParam(':habitaciones', $habitaciones);

$sentencia->bindParam(':banos', $banos);

$sentencia->bindParam(':metros', $metros);

$sentencia->bindParam(':ubicacion', $ubicacion);

$sentencia->bindParam(':direccion', $direccion);

$sentencia->bindParam(':telefono', $telefono);

$sentencia->bindParam(':precio', $precio);

$sentencia->bindParam(':usuario', $usuario);

$sentencia->bindParam(':inmobiliaria', $inmobiliaria);

$sentencia->bindParam(':moneda', $moneda);






// Termino la proteccion de datos contra Inyecciones SQL
 
//Empezamos la consulta INSERT


/*$sql = $mysqli->query("

	INSERT INTO propiedades (titulo, descripcion, operacion, tipo, habitaciones, banos, m2, ubicacion, direccion, telefono, precio, usuario, inmobiliaria, moneda, imagen1, imagen2, imagen3, imagen4, imagen5, imagen6, imagen7, imagen8, imagen9, imagen10, imagen11, imagen12) 

	VALUES ('$titulo', '$descripcion', '$operacion', '$tipo', '$habitaciones', '$banos', '$metros', '$ubicacion', '$direccion', '$telefono', '$precio', '$usuario', '$inmobiliaria', '$moneda', '$imagen1', '$imagen2', '$imagen3', '$imagen4', '$imagen5', '$imagen6', '$imagen7', '$imagen8', '$imagen9', '$imagen10', '$imagen11', '$imagen12')");*/



if ($sentencia) {	

	header("Location: ../propiedades.php");

}else{
	
	header("Location: ../propiedades.php");

}


?>
2
задан 19.12.2019, 22:29
1 ответ

Реализуй следующие изменения:

  • Закладки положения в mysqli манипулируют из-за символа ? тогда твоими INSERT дебет повернул таким образом, довел до сведения, что я только разместил какие-то подобно примеру, ты должен размещать то же число закладок положения, что и колонны будешь присоединять им реестр :

Консультирует Последующие

$sentencia = $mysqli->prepare("INSERT INTO propiedades (titulo, descripcion, 
                                                        operacion, tipo, 
                                                        habitaciones, banos, m2, 
                                                        ubicacion, direccion, 
                                                        telefono, precio, usuario, 
                                                        inmobiliaria, moneda, 
                                                        imagen1, imagen2, imagen3, 
                                                        imagen4, imagen5, imagen6, 
                                                        imagen7, imagen8, imagen9, 
                                                        imagen10, imagen11, 
                                                        imagen12)    
    VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
  • метод, который использует mysqli , называются bind_param и он должен содержать следующее:

    • Тип информации о каждой переменной
    • Каждая переменная, которая содержит стоимость, которая должна хранить
    • , ты Можешь перемещать всю стоимость в той же линии

Более или менее это мочь оставаться так:

$sentencia->bind_param('ssssss', $variable1, $variable2, $variable3,.....,$variableN);

, Если ты хранишь цепи текста, тогда ты размещаешь s, если ты будешь хранить целые числа, используй i, и если ты будешь хранить с десятичными тогда d

Ссылок

1
ответ дан 21.12.2019, 12:13
  • 1
    Этот có я говорю, что оно не будет функционировать. 1º в консультации есть 26 колонн, и 14 закладок ?. 2º mé совсем bindParam не существует в mysqli, mé всего bind_param. Другая вещь, которую OP должен осветлять, - qué тип - колонны, имя которых начинает из-за изображение , итак, если они типа BLOB, это будет осложнять вещь. Уже как комментарий, очень спорно иметь в таблице серию колонн этого стиля (imagen1, imagen2, imagenN...), quizá OP deberí чтобы объяснять немного из-за qué он это делает, чтобы мочь предлагать ему прогресс в Вашей модели данных. – A. Cedano 19.12.2019, 21:09
  • 2
    @A.Cedano он старался показывать ему точно, что я использовал bind_param и закончил тем, что писал, что то, что предполагается, он не должен использовать :( – Aprendiz 19.12.2019, 21:10
  • 3
    Относительно этого типов данных tambié n ты имеешь razó n, decidí оставлять это así только как пример и в ссылке официального doc. puede подтверждать в соответствии с тем, что будет хранить тогда, что выбрал, что он будет помещать – Aprendiz 19.12.2019, 21:11
  • 4
    @A.Cedano я согласовываюсь полностью с тобой, однако в части recomendació n Ваших колонн верно, что ты говоришь, но если ты помнишь в другом вопросе, в котором в самом деле ты помог мне в opinió n, но OP decidió что tení в причины, чтобы оставлять как дела (хотя это было очевидно, что habí в какие-то точки, которые были erró neos) , поэтому уже я не захотел достигнуть в этой точке – Aprendiz 19.12.2019, 21:18