0

我被这个困住了。

这是代码:

这就是我调用函数的方式,

$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 个函数,但是我遇到问题的第一个函数,我不知道为什么 =(

帮顶...

4

2 回答 2

0

根据个人经验,在转储/复制/粘贴到 PhPMyAdmin 时有效但在代码中无效的 MySQL 查询 由以下原因引起的:

  • 自动增量/唯一字段问题
  • 未处理的表单数据中的意外字符
  • 重复的 POST 值(如数组)
  • 不匹配的字段计数
  • 编码/字符集问题

如果您解决第二个问题,问题可能会自行解决。在任何情况下,您至少应该使用 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

于 2012-07-26T00:04:00.673 回答
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; }
}
?>
于 2012-07-25T23:45:05.770 回答