我坚持这个。
以下是代码:
这就是我调用函数的方式,
$res = DataManager::agregarPropiedad($_POST);
这是生成查询并发送它的函数,
public static function agregarPropiedad($datos){
$sql = "INSERT INTO propiedades (id_propiedad, nombre, tipopropiedad, descripcion, dormitorios, baños, direccion, localidad, provincia, fecha_alta, sup_cubierta, sup_total)
VALUES (null, '" . $datos['nombre'] . "', '" . $datos['tipo'] . "', '" . $datos['descripcion'] . "', '" . $datos['dormitorios'] . "', '" . $datos['baños'] . "', '" . $datos['direccion'] . "', '" . $datos['localidad'] . "', '" . $datos['provincia'] . "', CURRENT_TIMESTAMP, '" . $datos['supcubierta'] . "', '" . $datos['suptotal'] . "')";
//$sql = "insert into prueba values(null,'".$datos['nombre']."')";
echo $sql;
return DataManager::consulta($sql);
}
当我复制echo
$ sql并在phpMyAdmin中粘贴工作正常,但是当我尝试发送我的函数时没有插入任何内容,但我没有错误。 mysql_erros()
它也是空的。
你可以看到,有一个评论$sql
。我使用它只是为了测试另一个更简单的表,并查询功能“consulta”也很好。
这可能是在mysql数据库中插入东西的40个函数,但是第一个我遇到问题的函数,我不知道为什么=(
... helppppp
答案 0 :(得分:0)
VALUES()中的引号及其易受攻击的内容存在问题。
<?php
public static function agregarPropiedad($datos)
{
$tipo = mysql_real_escape_string($datos['tipo']);
$nomber = mysql_real_escape_string($datos['nombre']);
$dormitorios = mysql_real_escape_string($datos['descripcion']);
$baños = mysql_real_escape_string($datos['baños']);
$direccion = mysql_real_escape_string($datos['direccion']);
$localidad = mysql_real_escape_string($datos['localidad']);
$provincia = mysql_real_escape_string($datos['provincia']);
$supcubierta = mysql_real_escape_string($datos['supcubierta']);
$suptotal = mysql_real_escape_string($datos['suptotal']);
$sql = "INSERT INTO propiedades (id_propiedad, nombre, tipopropiedad, descripcion, dormitorios, baños, direccion, localidad, provincia, fecha_alta, sup_cubierta, sup_total)";
$sql .= "VALUES (null,'$tipo','$nomber ','$dormitorios ','$baños ','$direccion ','$localidad','$provincia ',CURRENT_TIMESTAMP,'$supcubierta','$suptotal')";
if(mysql_query($sql))
{
return TRUE;
}else{ return FALSE; }
}
?>
答案 1 :(得分:0)
从个人经验来看,MySQL查询在转储/复制/粘贴到PhPMyAdmin时工作,不在代码中工作是由以下原因引起的:
如果您解决第二个问题,问题可能会自行解决。在任何情况下,您至少应使用strip_tags和add_slashes处理POST(ed)数据,但对于MySQL,强烈建议使用mysql_real_escape_string()。
http://php.net/manual/en/function.mysql-real-escape-string.php http://www.adminsehow.com/2010/03/prevent-mysql-injection-in-php