2012-07-25 50 views
0

我被困在這裏。sql查詢在phpmyadmin中可用,但不能用於mysql_query

下面是代碼:

這是我如何調用該函數,

$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」。

這也許是40個功能,在MySQL數據庫中插入的東西,而是先與我有問題,我不知道爲什麼=(

helppppp ...

+2

Hooray for SQL注入! – cdhowie 2012-07-25 23:30:44

+0

你可以發佈它給出的錯誤嗎? – silentw 2012-07-25 23:33:48

+0

你的php.ini中的'display_errors'參數是否設置爲'On'? – bitfox 2012-07-25 23:35:46

回答

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

+0

tks的答案,我會研究該方向,我嘗試使用Johndave Decano說的(real_escape_string),但它不起作用 – Andrew 2012-07-26 00:10:48

+0

我解決了這個問題。我的表有一個字段名字baños白ñ似乎回聲給正確的字符,但是當我通過mysql_query一些東西搞砸了那個字符。 – Andrew 2012-07-26 01:58:15

+0

好消息!不要忘記防止SQL注入攻擊(如上面的鏈接所述)以避免任何令人討厭的意外。 :) – user1550189 2012-07-26 02:31:18

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; } 
} 
?> 
+0

tks爲響應,我嘗試但它相同...兩種方式生成sql查詢就好了,因爲當我粘貼在phpmyadmin插入行。但我沒有任何答案,當我嘗試在PHP中。 也有同樣的網絡有其他工作插入像這樣,和所有工作whitout問題=( – Andrew 2012-07-25 23:49:25

+0

它應該工作。讓我知道... – 2012-07-25 23:50:26

+0

我試了xD它的相同,我真的不知道這是怎麼回事。 func它幾乎是其他功能的副本正在工作。 – Andrew 2012-07-26 00:04:27

-1

我也有同樣的問題,因爲你所面對。

您可以通過運行PHP命令調試MySQL的錯誤:

echo mysql_error(); 

在我的情況下,錯誤是我的數據庫名。所以我建議你檢查你的數據庫配置文件,並確保你已經正確地命名了你的數據庫。

+0

歡迎來到StackOverflow!雖然答案總是值得讚賞的,但這個問題在4年前就已經提出,並且已經有了一個可接受的解決方案請儘量避免通過向他們提供答案來'碰撞'問題,除非問題還沒有被標記爲已解決,或者您找到了一個更好的替代方法來解決問題:) – 2017-02-15 21:13:55

相關問題