У меня странная проблема: у меня есть страница 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);
Прежде всего - упростите его:
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() как результат запроса, так и запрос.
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
Это добавит NULL, если $theValue равно 0 (ноль). Тип PHP отличает 0, ", '', null и другие другие значения, поскольку все они равны. Возможно, это то, что вы хотите, но мне нелегко видеть, как превращение законного" 0" в SQL NULL - это всего лишь плохая идея.
Кроме того, в случае defined
вы не избегаете $theDefinedValue
или $theUndefinedValue
, поэтому все это может потенциально привести к SQL-инъекции, если только вы не выполняете экранирование перед вызовом функции.
Вы добавили некоторые отладочные эхо в код? Возможно, он даже не доходит до ваших операций с базой данных, потому что он взорвался в этом файле mzk_mdc.php. По крайней мере, код выдает окончательный запрос непосредственно перед вызовом query()
и видит, правильно ли он генерируется. Вручную запустить его через монитор mysql и посмотреть, что произойдет.
Вы пытались использовать mysql_error()?
то есть.
mysql_query ('SHOW TABLES') или die (mysql_error());