sql查询在phpmyadmin中工作,但在mysql_query中不起作用

时间:2012-07-25 23:28:41

标签: php mysql insert

我坚持这个。

以下是代码:

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

$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

2 个答案:

答案 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时工作,在代码中工作是由以下原因引起的:

  • 自动增量/独特字段问题
  • 未处理的表单数据中的意外字符
  • 重复的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