2015-09-13 3 views
1

У меня есть сайт магазина и вы хотите удалить то, что я добавляю, но не могу заставить его работать.Удалить строку mySql с PHP

Все соответствующий код ниже:

Главная страница:

<?php 
    //external pages area 
    include_once('config/database.php'); 
    include_once('object/chair.php'); 
    //grabs info from the various pages.sql files 
    $database = new Database(); 
    $conn = $database->getConnection(); 
    $chair = new Chair($conn); 
    //connection made with sql file 
    $stmt = $chair->readAll(); 
    //reading all the data in the sql file 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 
?> 
    <div class="ProductActionAdd" style="display:;"> 
     <a href="chair-details.php?detailsid=<?php echo $row['ID'];?>" class="btn">Buy me!</a> 
    </div> 

Детали страницы:

<?php 
    include_once('config/database.php'); 
    include_once('object/chair.php'); 
    $database = new Database(); 
    $conn = $database->getConnection(); 
    $chair = new Chair($conn); 
    $chair->id = $_GET['detailsid']; 
    $stmt = $chair->readDetails(); 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 
?> 
    <a href='delete-chair.php?detailsid=<?php echo $row['ID'];?>' class="deleteit">deleate</a> 

Удалить страницу:

<?php 
    include_once('config/database.php'); 
    include_once('object/chair.php'); 
    $database = new Database(); 
    $conn = $database->getConnection(); 
    $chair = new Chair($conn); 
    $chair->id = $_GET['detailsid']; 
    $stmt = $chair->readAll(); 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 
?> 
    <div class="center_items"> 
     <div class="all-items"> 
     <?php 
      $sql="DELETE FROM office_chairs WHERE id ='{$chair->id}'";  
    } 
     ?> 

Он утверждает, что detailsID является унд efined и что объект класса стульев не может быть преобразован в строку.

ответ

1

Ну ... вы получаете параметр detailsid через $_GET, а затем назначаете его в собственность под названием id.

$chair->id = $_GET['detailsid']; 

Таким образом, вызов переменной с именем $ detailid невозможен - не возникает такой переменной. Используйте свойство, которому вы тоже присвоили значение.

Переменная $ chair содержит новый экземпляр класса Chair. Я не знаю, каковы ваши намерения? Динамическое имя таблицы базы данных? Если нет, просто напишите имя таблицы.

Исправляющие запрос от

$sql="DELETE FROM $chair WHERE id = '$chair->id'"; 

к:

$sql="DELETE FROM table_name_here WHERE id ='$detailsid'"; 

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

Например

$sql="DELETE FROM table_name_here WHERE id = ?"; 
$stmt -> $con = prepare($sql); 
$stmt -> execute(array($chair -> id)); 
1

Обновление

$sql="DELETE FROM $chair WHERE id ='$detailsid'";

к

$sql="DELETE FROM chair WHERE id ='{$chair->id}'";

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