2016-02-10 3 views
1

Вот мой соответствующий код:Как использовать переменные сеанса в SQL-запросе?

<?php 
require("common.php"); 

$userID = $_SESSION['user']['id']; 

echo $userID; 
if(!empty($_POST)) 
{ 
    if(empty($_POST['bio'])) 
     { 
      die("Please enter your Bio."); 
     } 

    if(empty($_POST['location'])) 
     { 
      die("Please enter your location");  
     } 


    $query = 'UPDATE users 
       SET usertype = 1 
       WHERE id="$userID"'; 


    $query_params = array( 
     ':bio' => $_POST['bio'], 
     ':location' => $_POST['location'], 
    ); 

    try 
    { 
     $stmt = $db->prepare($query); 
     $result = $stmt->execute(); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to run query: " . $ex->getMessage()); 
    } 

    // header("Location: myprofile.php"); 
} 
?> 

Я пытаюсь обновить поле UserType 1 о представлении формы, где идентификатор совпадает с текущей сессии, как указано в переменной $ USERID. Когда код работает, он не содержит ошибок, но использование переменной PHP внутри запроса не работает, поле не обновляется.

Я пробовал разные кавычки, и я могу получить доступ к переменной все на протяжении нескольких операторов if, но не в запросе. Кроме того, я использую PDO для этого. Любая помощь приветствуется!

ответ

1

Вы используете неправильные кавычки в своем запросе. Измените их к этому:

$query = "UPDATE users 
      SET usertype = 1 
      WHERE id='$userID'"; 

Кавычки используются, когда вы хотите передать переменную в строку без конкатенации его. И MYSQL нуждается в апострофах, чтобы понять значение как строку.

Вот где вы поступили не так: в запросе использовались котировки ".

Поскольку вы уже используете PDO, так что я не вижу никаких проблем на проездом идентификатор пользователя в качестве параметра:

$query = 'UPDATE users 
      SET usertype = 1 
      WHERE id=:userid'; 


$query_params = array( 
    ':bio' => $_POST['bio'],   //I think you will need to add those 
    ':location' => $_POST['location'], //parameters to the string or it will fail 
    ':userid' => $userID 
); 

Конечно, вы можете использовать PHP строку с кавычками, но вам нужно будет избежать апострофов для запроса mysql и объединить переменную следующим образом:

$query = 'UPDATE users 
      SET usertype = 1 
      WHERE id=\''.$userID.'\''; 
+0

спасибо, это была единственная проблема! –

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