проблема с вставкой в БД mysql с использованием PHP

0

У меня странная проблема: у меня есть страница PHP, используемая для вставки данных в Mysql DB. проблема в том, что когда я выполняю код, ничего не добавляется в db и никаких ошибок появляется, хотя я устанавливаю коды ошибок отображения

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

любое представление об этой проблеме!

вот мой использованный код для вставки

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);
Теги:

3 ответа

0

Прежде всего - упростите его:

    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 enough to run that

Затем попробуйте распечатать mysql_error() и var_dump() как результат запроса, так и запрос.

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

Это добавит NULL, если $theValue равно 0 (ноль). Тип PHP отличает 0, ", '', null и другие другие значения, поскольку все они равны. Возможно, это то, что вы хотите, но мне нелегко видеть, как превращение законного" 0" в SQL NULL - это всего лишь плохая идея.

Кроме того, в случае defined вы не избегаете $theDefinedValue или $theUndefinedValue, поэтому все это может потенциально привести к SQL-инъекции, если только вы не выполняете экранирование перед вызовом функции.

Вы добавили некоторые отладочные эхо в код? Возможно, он даже не доходит до ваших операций с базой данных, потому что он взорвался в этом файле mzk_mdc.php. По крайней мере, код выдает окончательный запрос непосредственно перед вызовом query() и видит, правильно ли он генерируется. Вручную запустить его через монитор mysql и посмотреть, что произойдет.

0

Вы пытались использовать mysql_error()?

то есть.

mysql_query ('SHOW TABLES') или die (mysql_error());

  • 0
    да, я сделал здесь используется код для вставки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню