PHP: Подготовленные операторы (новичок) получают эту ошибку - PullRequest
1 голос
/ 16 июня 2011

Я новичок в подготовленных утверждениях и пытаюсь заставить что-то простое работать.

Это моя таблица БД:

`unblocker_users` (
  `uno` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_email` varchar(210) DEFAULT NULL,
  `pw_hash` varchar(30) DEFAULT NULL,
  `email_confirmed` tinyint(4) DEFAULT NULL,
  `total_requests` bigint(20) DEFAULT NULL,
  `today_date` date DEFAULT NULL,
  `accessed_today` tinyint(4) DEFAULT NULL,)

, и это моя функция для вставки некоторых тестовых данных.

function add_new_user($e_mail1)
    {
    require_once "db.php";
// ####### Below line is giving an error ########
$stmt = $mysqli->prepare("INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)");
$stmt->bind_param('sss', $e_mail1, $this->genRandomString(1),$this->today_date()); 

$stmt->execute();

$stmt->close(); 
$done = $stmt->affected_rows;

return $done;
    }

Как вы можете видеть выше, я отметил строку, которая дает мне ошибку.Ошибка " Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in..."

Где я ошибся?

Ответы [ 3 ]

4 голосов
/ 16 июня 2011

Эта строка может вызывать проблемы

$stmt = $mysqli->prepare("INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)");

Увидимся, когда вы закроете и снова откроете строку в значениях, измените "" на '' Это все, что я мог увидеть одним быстрым взглядом.

3 голосов
/ 16 июня 2011
"INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)"

В php, если вы хотите использовать двойные кавычки в двойных кавычках, вы должны избегать внутренних

"INSERT INTO unblocker_users VALUES (\"\",?, ?,0,0,?,0)"

Или использовать одинарные кавычки в качестве внешних ...

'INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)'

... или внутренние кавычки

"INSERT INTO unblocker_users VALUES ('',?, ?,0,0,?,0)"

Насколько я знаю, в MySQL все равно используются одинарные кавычки

3 голосов
/ 16 июня 2011

У вас есть "с двойной строкой в ​​кавычках. PHP думает

"INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)"

это 2 строки:

"INSERT INTO unblocker_users VALUES ("

",?, ?,0,0,?,0)"

но не то, что вы хотите с ними сделать.

изменить внешние кавычки на одинарные кавычки, и это должно работать:

'INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)'

...