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);

}

$ sqlをコピーechoしてphpMyAdminに貼り付けると正常に機能しますが、関数を送信しようとしても何も挿入されませんが、エラーは発生しません。mysql_erros()その空も。

Uはそれを見ることができます、コメントがあり$sqlます。これは、はるかに単純な別のテーブルでのテストに使用し、関数「consulta」も正常に機能するようにクエリします。

これはおそらくmysqlデータベースに物事を挿入する40の関数ですが、最初に問題が発生し、理由がわかりません=(

helppppp..。

4

2 に答える 2

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 に答える
0

個人的な経験から、コードで機能しないPhPMyAdminにダンプ/コピー/貼り付けされたときに機能するMySQLクエリ は、次の原因で発生します。

  • 自動インクリメント/固有のフィールドの問題
  • 未処理のフォームデータの予期しない文字
  • 重複するPOST値(配列など)
  • 不一致のフィールド数
  • エンコーディング/文字セットの問題

2番目の問題に対処すると、問題が自動的に解決する可能性があります。いずれの場合も、少なくとも、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 に答える