我对此感到困惑。
这是代码:
这就是我如何调用函数
$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()
也是空的。
U可以看到,有一个注释$sql
。我使用它只是为了测试另一个简单得多的表,并查询函数"consulta",它也很好用。
这可能是在mysql数据库中插入内容的40个函数,但这是我遇到问题的第一个函数,我不知道为什么=(
帮助pppp。。。
根据个人经验,MySQL查询在转储/复制/粘贴到PhPMyAdmin时工作,而在代码中不工作是由以下原因引起的:
- 自动递增/唯一字段问题
- 未处理的表单数据中出现意外字符
- 重复的POST值(如数组)
- 字段计数不匹配
- 编码/字符集问题
如果你解决第二个问题,问题可能会自行解决。在任何情况下,您至少应该使用strip_tags和add_slasms处理POST(ed)数据,但对于MySQL,强烈建议使用MySQL_real_eescape_string()。
http://php.net/manual/en/function.mysql-real-escape-string.phphttp://www.adminsehow.com/2010/03/prevent-mysql-injection-in-php
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; }
}
?>