2015-07-03 2 views
0

Я пытаюсь получить идентификатор пользователя с предыдущей страницы и выводить информацию на другую страницу, и в моем подготовленном сообщении я получаю сообщение об ошибке в части подготовки инструкции. Я не получаю, что у меня есть этот почти точный код на другом сайте, который у меня есть, и он отлично работает. Я в тупике, я просмотрел все имена в моем db, и все правильно.Не удалось подготовить в подготовленном сообщении

Это ошибка я получаю:

подготовить() не удалось: У вас ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'group FROM users WHERE id =?' в строке 1

линия, которая упоминается это один ...

$stmt = $con->prepare("SELECT fullname, email, username, group FROM users WHERE id = ?"); 

Это полное подготовленное заявление.

<?php 
$con = mysqli_connect("localhost","root","","db"); 
/* check connection */ 
    if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 
    $stmt = $con->prepare("SELECT fullname, email, username, group FROM users WHERE id = ?"); 
    if (false===$stmt) { 
    // Check Errors for prepare 
    die('prepare() failed: ' . htmlspecialchars($con->error)); 
} 
$stmt->bind_param("i", $_GET['id']); 
    if (false===$stmt) { 
     // Check errors for binding parameters 
     die('bind_param() failed: ' . htmlspecialchars($stmt->error)); 
    } 
$stmt->execute(); 
    if (false===$stmt) { 
     die('execute() failed: ' . htmlspecialchars($stmt->error)); 
    } 
    //Check errors for execute 
//if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);} 
$stmt->bind_result($fullname, $email, $username, $group); 
$stmt->store_result(); 

if ($stmt->fetch()) { ?> 

Я пропустил что-то очень очевидное или что может быть причиной этого?

ответ

1

Положите обратную сторону (серьезные акценты `) или кавычки (или апострофы) вокруг группы, чтобы она выглядела как« группа ». Это ключевое слово MySQL, так что это то, что испортило ваш запрос. Это хорошая практика всегда делать это с именами столбцов.

+0

Зачем это ошибка, и теперь пропускается только для последнего имени столбца? – Becky

+0

Поскольку GROUP является частью ключевого слова MySQL. Вот почему ваше сообщение об ошибке начинается с группы. Он ищет GROUP BY. Но, как я уже сказал, хорошая практика заключается в том, чтобы помещать все имена столбцов внутри обратных тактов, чтобы вам никогда не приходилось беспокоиться об использовании ключевого слова. Вот страница об этом https://dev.mysql.com/doc/refman/5.0/en/keywords.html – chrisjacob

+0

Я предполагаю, что технически это зарезервированное слово вместо ключевого слова, но в любом случае это все равно вызовет проблемы. – chrisjacob

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