2017-02-17 3 views
0

У меня возникла проблема с обновлением строки состояния в моей таблице mysql с использованием процедуры PDO. Строка состояния определяется как 0 в таблице, поэтому я хочу, чтобы она менялась до 1, когда я нажимаю кнопку подтверждения, но она не могла, и я пытался исправить ее всю ночь, но я не мог.Я не смог обновить строку состояния в своих данных с помощью процедуры PDO

Вот мое подключение к БД

<?php 
class Database 
{ 
    private $host = "localhost"; 
    private $db_name = "jerrydb"; 
    private $username = "root"; 
    private $password = ""; 
    public $conn; 





    public function dbConnection() 
    { 

     $this->conn = null;  
     try 
     { 
      $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password); 
      $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     } 
     catch(PDOException $exception) 
     { 
      echo "Connection error: " . $exception->getMessage(); 
     } 

     return $this->conn; 
    } 
} 

?> 

вот мой сценарий, я хочу, чтобы подтвердить, чтобы исчезнуть, когда я нажал на нее и в то же время строке состояния изменения 1.

<?php 


if (isset($_GET['entity']) && isset ($_GET['action']) && isset($_GET['user_id'])){ 

    $entity = mysqli_real_escape_string($db, $_GET['entity']); 
    $action = mysqli_real_escape_string($db, $_GET['action']); 
    $user_id = mysqli_real_escape_string($db, $_GET['user_id']); 



$query = "UPDATE jerrydb set status = '1' WHERE user_id='$user_id'"; 

    $db->query($query); 
} 




$query = "SELECT * FROM jerrydb WHERE status='0' ORDER BY user_id DESC"; 

$jerrydb = $db->query($query); 

?> 

<?php if($row = $jerrydb->fetch_assoc()) { ?> 


        <tr> 
        <td><a href="index.php?entity=go&action=approve&id=<?php echo $row['id'];?>" class="btn btn-success">Confirm</a> </td> 



       </tr> 

        <?php } ?> 
+0

Я просмотрел все ответы SQL Injection и я не мог понять, я буду рад, если мои КОДЫ будут изменены. Я новичок в веб-разработке. Спасибо – Joe

+2

[YCS] (http://stackoverflow.com/users/285587/your-common-sense) закрыл еще один вопрос с неправильной ссылкой. Это не имеет ничего общего с SQL-инъекцией, но смешивает различные mysql-apis и не использует правильную переменную соединения. Когда этот парень когда-нибудь узнает? Я снова открыл вопрос. –

+0

, если вы используете pdo, вам нужно перейти с bindParam и выполнить шаг. прямой запрос не рекомендуется. И вы можете опубликовать результат var_dump ($ query) вашего обновления, чтобы вы могли узнать, какой запрос сгенерирован. –

ответ

0

Фактически вы используете PDO, поэтому вам не нужно использовать их mysqli_real_escape_string Когда вы используете PDO, лучше всего подготовить инструкцию execute, execute.

<?php 
if (isset($_GET['entity']) && isset($_GET['action']) && isset($_GET['user_id'])) { 
    $entity = $_GET['entity']; 
    $action = $_GET['action']; 
    $user_id = $_GET['user_id']; 
    $query = $conn->prepare("UPDATE jerrydb SET status = '1' where user_id = ? "); 
    if ($query->execute([$user_id])) { 
     echo "status updated"; 
    } else { 
     echo "not"; 
    } 
} 
$query = $conn->prepare("SELECT * FROM jerrydb WHERE status='0' ORDER BY user_id DESC"); 
$query->execute(); 
$jerrydb = $query->fetchall(PDO::FETCH_ASSOC); 
if (count($jerrydb) > 0) { // we have results 
    foreach ($jerrydb as $key => $row) { 
    } 
?> 

      <tr> 
        <td><a href="index.php?entity=go&action=approve&id=<?php 
    echo $row['id']; 
?>" class="btn btn-success">Confirm</a> </td> 



       </tr> 

<?php 
} 
?> 

Чтобы узнать больше о PDO, пожалуйста, посетите этот сайт, он хорошо объясняет и сделать все легко и просто https://phpdelusions.net/pdo

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