Чтобы сделать мою жизнь немного проще, я создал функцию DoQuery:
// DoQuery
function DoQuery($sql)
{
global $cm_db_host,$cm_db_user,$cm_db_pass,$cm_db_name;
$con = mysql_connect($cm_db_host,$cm_db_user,$cm_db_pass);
if(!$con) return 1001;
$db = mysql_select_db($cm_db_name);
if(!$db) return 1002;
$res = mysql_query($sql);
if(!$res) return 1003;
return $res;
mysql_close();
}
Функция работает отлично - кажется ..
Вот как я ее использую:
$res = DoQuery("UPDATE table SET column1='value 1',column2='value 2' WHERE id=1;");
switch($res){
case true:
echo 'Response[success]ENDCMTAG';
break;
case 1001:
die('Response[dberror1001]ENDCMTAG\r\n'.
'MySQLError['.mysql_error().']ENDCMTAG\r\n');
break;
case 1002:
die('Response[dberror1002]ENDCMTAG\r\n'.
'MySQLError['.mysql_error().']ENDCMTAG\r\n');
break;
case 1003:
die('Response[dberror1003]ENDCMTAG\r\n'.
'MySQLError['.mysql_error().']ENDCMTAG\r\n');
break;
}
Теперь, когда я намеренно испортил оператор SQL, поэтому следует использовать case 1003
, case true
- это то, что выполняется.
Согласно руководству по PHP (да,Я действительно искал это;;)) ВСТАВКА MySQL, ОБНОВЛЕНИЕ .... или возвратит истину или ложь.В моей функции DoQuery всякий раз, когда функция MySQL возвращает false, вместо этого я выводил конкретные коды ошибок, поэтому я знаю, где она пошла не так.Если ошибки не возникает, $res
должно быть истинным, а затем должно выполняться case true
, верно?
Проблема в том, что он всегда выводит true, даже если я изменяю SQL-запрос на мусор.1017 *
Если я поставлю case true
внизу переключателя, case 1001
всегда выполняется , когда все идет хорошо - я знаю, потому что я проверяю поле mysql_error()
и егопусто.
Что я делаю не так?