Estoy creando un CRUD simple usando OOP, PHP, pero recibo errores cuando ejecuto add.php y el archivo de actualización y eliminación. El mismo error en todos los archivos (add.php, update.php, delete.php)
Aquí están los errores:
Aviso: índice no definido: ID_proveedor en C:\wamp64\www\OBJEPRO\add.php en la línea 12
Aviso: Índice indefinido: Company_Name en C:\wamp64\www\OBJEPRO\add.php en la línea 12
Advertencia: mysqli_query() espera al menos 2 parámetros, 1 dado en C:\wamp64\www\OBJEPRO\dbcrud.php en la línea 10
Aquí está el código en add.php
<?php require_once("header.php"); require_once("dbcrud.php"); if (isset($_POST['submit'])) { } $dbcrud=new dbcrud; $result=$dbcrud->create($_POST['Supplier_ID'],$_POST['Company_Name']); if($result){ echo "<br />"; echo "Successfully added."; }else{ echo "<br />"; echo "Error!"; } ?> <p><h3>Add Supplier:</h3></p> <form action="" method="POST"> <p>Supplier ID: <input type="text" name="Supplier_ID"></p> <p>Company Name: <input type="text" name="Company_Name"></p> <p><input type="submit" name="submit" value="Save"></p> </form>Y aquí está el código en dbcrud.php:
<?php require_once("dbconn.php"); class dbcrud { public function __construct(){ $dbconn=new dbconn; } public function create($Supplier_ID, $Company_Name){ $result=mysqli_query("INSERT INTO suppliers(Supplier_ID, Company_Name) VALUES('$Supplier_ID','$Company_Name')"); return $result; } public function read(){ $result=mysqli_query("SELECT * suppliers"); return $result; } public function update($Supplier_ID, $Company_Name){ $result=mysqli_query("UPDATE suppliers SET Company_name='{$Company_Name}' WHERE Supplier_ID={$Supplier_ID}'"); return $result; } public function delete($Supplier_ID){ $result=mysqli_query("DELETE FROM suppliers WHERE Supplier_ID={$Supplier_ID}"); return $result; } } ?>¿Alguien puede ayudarme?
La documentación de mysqli_query() establece claramente las dos alternativas de cómo usar ese método. Mezclas ambos, lo que no funcionará.
Ignorando una gran cantidad de otros problemas, me atrevo a decir que esta modificación de su clase lo acercará a lo que está buscando. Almacena el objeto de conexión de la base de datos dentro de una propiedad de clase para que pueda reutilizarse para las consultas reales.
<?php require_once("dbconn.php"); class dbcrud { private $dbconn; public function __construct(){ $this->dbconn = new dbconn; } public function create($Supplier_ID, $Company_Name){ $result = mysqli_query( $this->dbconn, "INSERT INTO suppliers(Supplier_ID, Company_Name) VALUES('$Supplier_ID','$Company_Name')" ); return $result; } public function read(){ $result = mysqli_query( $this->dbconn, "SELECT * FROM suppliers" ); return $result; } public function update($Supplier_ID, $Company_Name){ $result = mysqli_query( $this->dbconn, "UPDATE suppliers SET Company_name='{$Company_Name}' WHERE Supplier_ID={$Supplier_ID}'" ); return $result; } public function delete($Supplier_ID){ $result = mysqli_query( $this->dbconn, "DELETE FROM suppliers WHERE Supplier_ID={$Supplier_ID}" ); return $result; } }Sin embargo, esto es sólo parte de una solución. Realmente necesita trabajar con algunos tutoriales para aprender a codificar cosas de la base de datos. Por un lado, hay enormes implicaciones de seguridad en su código. Debe conocer los beneficios de usar "declaraciones preparadas" en combinación con "enlace de parámetros" para evitar la vulnerabilidad de inyección de sql.
Así que tome esto como un punto de partida, muchos otros problemas quedan sin respuesta...