2012-02-15 2 views
0

Я работаю с WordPress, и я создал форму в разделе admin. Я пытаюсь отправить его в другую базу данных (а не по умолчанию wp), поэтому я успешно переключаю базы данных и делаю запрос на вставку, но я все время получаю сообщение об ошибке.Не удается отправить форму в базу данных

Это мой код:

$selected = mysql_select_db('petracms', $serverAccess); 
if (!$selected) { 
    die ('Can\'t use foo : ' . mysql_error()); 
} 
$query = "INSERT INTO `petra_customers` (`FirstName`, `LastName`, `Email`, `Phone`) VALUES ($fName, $lName, $email, $phone)"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

Я получаю эту ошибку:

Invalid query: 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 '@gmail.com, 5859475566)' at line 1

Это мой вход: (Adam, Page, [email protected], 5859475566)

Я понятия не имею, что я делаю неправильно

+0

Возможно, это интерпретирует «@» как некоторую форму регулярного выражения. Это было бы моим лучшим предположением, не зная о PHP. Попробуйте поставить символ «\» перед символом «@». О, и если это работает, подумайте о том, чтобы не использовать встроенные переменные. Вместо этого объедините их. Например: «значения». $ MyVariableToInsert. ";" –

ответ

1

Значения в INSERT заявления должны быть включены в цитаты (кроме «чисел»):

INSERT INTO `foo` (`a`,`b`,`c`) VALUES("foo","bar",1) 

Это как бы вы (безопасно) построить переменную для использования в строке запроса интерполяции (это неодобрительно, хотя):

$email = sprintf('"%s"', mysql_real_escape_string($_POST['email'])); 
$query = "INSERT INTO `foo` (`email`) VALUES($email)"; 

Более элегантный способ (и гораздо более безопасный, тоже), чтобы использовать подготовленные заявления (пример использует PDO):

# Prepare the statement 
$sth = $dbh->prepare('INSERT INTO `foo` (`email`) VALUES(:email)'); 

# Substitute placeholders in query and execute it 
$sth->execute(array(
    'email' => $_POST['email'] 
)); 
0

Я предполагаю, что вы забыли добавить ЦИТАТЫ ' к вашему INSERT дию гу. Ознакомьтесь с любым учебным пособием в Интернете о том, как делать простые вставки, например здесь: http://www.w3schools.com/php/php_mysql_insert.asp

Смежные вопросы