2011-01-16 7 views
0

J'ai un problème étrange que j'ai une page PHP utilisée pour insérer des données dans MySQL DB. le problème est que quand j'exécute le code, rien ajouté à db et aucune erreur est apparue bien que je définir des codes d'erreurs d'affichageproblème avec insérer dans MySQL DB en utilisant PHP

error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 

une idée sur ce problème!

ici est mon code utilisé pour insérer

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
    if (PHP_VERSION < 6) { 
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
    } 

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

    switch ($theType) { 
    case "text": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break;  
    case "long": 
    case "int": 
     $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
     break; 
    case "double": 
     $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
     break; 
    case "date": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break; 
    case "defined": 
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
     break; 
    } 
    return $theValue; 
} 


include("Connections/mzk_mdc.php"); 
       $ext = 1; 
       $website = "mzk"; 
       $mzk_sql=sprintf("INSERT INTO downloads (image, `by`, `rapid_title`, title, `description`, category, div_id, topic_url, down_times, ext, `website`) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", 
        GetSQLValueString($topic_thumb_image, "text"), 
        GetSQLValueString($topic_by, "text"), 
         GetSQLValueString($topic_des, "text"), 
         GetSQLValueString($topic_title, "text"), 
        GetSQLValueString($forum_content, "text"), 
        GetSQLValueString($topic_category, "text"),GetSQLValueString($topic_div, "text"),GetSQLValueString($forum_link, "text") ,GetSQLValueString($topic_down_times, "int"),GetSQLValueString($ext, "int"), GetSQLValueString($website, "text")); 
         mysql_select_db($database_mdc, $mdc); 
         $mzk_result = mysql_query($mzk_sql, $mdc) or die("can not do more"); 

         mysql_close($mdc); 

Répondre

0

Avez-vous essayé d'utiliser mysql_error()?

à savoir

mysql_query ('SHOW TABLES') or die (mysql_error());

+0

oui j'ai fait voici le code utilisé pour l'insertion – user504363

0
$theValue = ($theValue != "") ? intval($theValue) : "NULL"; 

Ceci insérerait une valeur NULL si $ theValue vaut 0 (zéro). Le type PHP lance 0, "", '', null, et diverses autres valeurs étant toutes égales. Peut-être que c'est ce que vous voulez, mais j'ai du mal à voir comment transformer un «0» légitime en un SQL NULL est tout sauf une mauvaise idée.

De plus, dans le cas defined, vous n'êtes pas échapper à la $theDefinedValue ou $theUndefinedValue, donc ceux qui pourraient encore conduire potentiellement à l'injection SQL, à moins que vous faites la fuite avant l'appel de fonction.

Avez-vous mis un peu de débogage en écho dans le code? Peut-être que cela n'atteint même pas les opérations de votre base de données, car il est explosé dans ce fichier mzk_mdc.php. Au moins, le code renvoie la requête finale juste avant que vous n'effectuiez l'appel query() pour voir s'il est généré correctement. Exécutez-le manuellement à travers le moniteur mysql et voir ce qui se passe.

0

tout d'abord - le simplifier:

if(''==$value) 
     $value = 'NULL'; //if you want that NULL in query 
    else 
     $value = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($value) :mysql_escape_string($value); //It's enough to run that 

Ensuite, essayez d'imprimer mysql_error() et var_dump() à la fois résultat de la requête et la requête.