Не получается занести данные в таблицу.

ZaRoX

Новичок
Не получается занести данные в таблицу.

Я столкнулся с проблемой занесения данных в таблицу базы данных по средством SQL запросов (mysql_query()). Вот мой код
<?
$link = mysql_pconnect("localhost", "*****", "*****")
or die("Could not connect: " . mysql_error());

if (mysql_select_db("********")) {
} else {
printf ("Error creating database: %s\n", mysql_error());
}
$query = "INSERT INTO register (login,pass,mail,name,lastname) VALUES ($login,$pass,$mail,$name,$lastname)";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
?>


При выполнении скрипта возникает ошибка:
Database created successfully Query failed : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '@bk.ru,Миша,ZaRoX)' at line 1

Я не понимаю где ошибка и почему. Объясните пожалуйста.
 

Nicknamed

Guest
Ага, да еще и не в обычные кАвычки, а в `вот такие`. Которые находятся на букве Ё.
Т.е. правильный запрос будет:
PHP:
$query = "INSERT INTO register (login,pass,mail,name,lastname) VALUES (`".$login."`,`".$pass."`,`".$mail."`,`".$name."`,`".$lastname."`)";
Но не факт, что это будет работать.
А вообще-то говоря, есть такая замечательная функция:
PHP:
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $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 "year":
	  $theValue = ($theValue != "") ? "'" . $theValue : "NULL";
	  break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
И тогда запрос будет писаться как:
PHP:
$query = sprintf("INSERT INTO register (login,pass,mail,name,lastname) VALUES (%s,%s,%s,%s,%s)",
  GetSQLValueString($login, "text"),
  GetSQLValueString($pass, "text"),
  GetSQLValueString($mail, "text"),
  GetSQLValueString($name, "text"),
  GetSQLValueString($lastname,"text"));
 

Фанат

oncle terrible
Команда форума
Nicknamed, пожалуйста, не пиши глупостей.
При твоём уровне знаний противопоказано что-либо отвечать на форуме.
тебе следует только читать.
Я очень надеюсь, что ты не воспримешь эту рекомендацию, как оскорбление.
впрочем, если воспримешь, то хуже ты сделаешь только себе.

-~{}~ 20.03.05 22:24:

ZaRoX почитай внимательно вот это: PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.
Это как раз то, что тебе нужно
 
Сверху