real - php mysqli execute query
problemas con mysqli prepararse (1)
El problema no es el número de columnas en la tabla, es que hay un error tipográfico en la instrucción de insert
. Tiene "IP.Email.File" en lugar de "IP, Email, File", por lo que el motor de DB cree que tiene un número de columnas diferente a los literales especificados en la instrucción de inserción.
INSERT INTO `Orders`
-- 11 columns here, because "IP.Email.File" parses as one column
(OrderID,IP.Email.File,Cat,Price,Discount,Size,Scaleby,Emailed,Downloaded,Payment,DateTime)
-- 13 values here
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)
Tengo problemas con $mysqli->prepare
con el siguiente código:
if (!($stmt = $mysqli->prepare("INSERT INTO `Orders` (OrderID,IP.Email.File,Cat,Price,Discount,Size,Scaleby,Emailed,Downloaded,Payment,DateTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)"))) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
Código actual:
if (!($stmt = $mysqli->prepare("INSERT INTO `Orders` (OrderID,IP,Email,File,Cat,Price,Discount,Size,Scaleby,Emailed,Downloaded,Payment,DateTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"))) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
Mensaje de error:
Error de preparación: (1136) El recuento de columnas no coincide con el recuento de valores en la fila 1
código utilizado para hacer la tabla:
if ($mysqli->query(''CREATE TABLE IF NOT EXISTS `Orders` (
ID BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID),
OrderID CHAR(40),
IP CHAR(40),
Email VARCHAR(254),
File VARCHAR(30),
Cat VARCHAR(30),
Price DEC(5,2),
Discount DEC(3,2),
Size VARCHAR(30),
Scaleby DEC(3,2),
Emailed BOOL,
Downloaded BOOL,
Payment VARCHAR(30),
DateTime DATETIME)'') === False){
printf("Error: %s/n", $mysqli->error);
}
He intentado eliminar (...)
de INSERT INTO...
en un intento de corregir el error pero eso no funcionó. También traté de simplificarlo a 3 ?
marcas pero todavía no funcionó.
El ?
las marcas son marcadores de posición en una declaración preparada