2015-07-09 4 views
0

Я сделал страницу для удаления различных элементов моего сайта, но по какой-то причине она не работает ... Событие, хотя я установил fMenu как i-целое, потому что это так. Когда я запускаю этот код, он дает мне:php mysqli подготовленный оператор удалить вопрос запроса

Фатальная ошибка: Вызов функции члена bind_param() на не-объект в C: \ Users \ Йонас \ Desktop \ Le Керуак \ корень \ админ \ remove.php на линии

код (PHP):

include_once('../php/connDbPrepared.php'); 
mysqli_set_charset($mysqli, 'utf8'); 
//Anti mysql injection precautions 
$menu = mysqli_real_escape_string($mysqli, $menu); 
$sql = "REMOVE FROM menu WHERE fMenu = ?"; 
$stmt = $mysqli->prepare($sql); 
$stmt->bind_param("i", $menu); 
if($stmt->execute()) 
{ 
    $stmt->close(); 
    echo ' 
    <script type="text/javascript"> 
    window.location.replace("../admin/admintable.php?page=main&message=removeSuccessMenu"); 
    </script> 
    '; 
} 
else 
{ 
    echo ' 
    <script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $("#screenCover").slideToggle("slow"); 
     $("#closePopup").click(function() 
     { 
      $("#screenCover").slideToggle("slow"); 
      setTimeout(resetPage, 600); 
     }); 
}); 
function resetPage() 
{ 
    window.location.replace("../admin/admintable.php?page=main"); 
} 
</script> 
<div id="screenCover" style="display:none;"> 
<div id="popup"> 
<div id="closePopupMain"> 
<p id="closePopup"><a href="#">X</a></p> 
</div> 
<p id="failure">Le menu n\'a pas éte enlevée! Cause: Erreur '.mysqli_errno($mysqli).": ".mysqli_error($mysqli).'</p> 
</div> 
</div>'; 
} 
+1

Вашего скрипт не хватает обработок ошибок. При обработке ошибок вы, вероятно, нашли бы ошибку самостоятельно довольно быстро. По крайней мере, активируйте исключения, если вы не хотите проверять возвращаемое значение каждого отдельного вызова функции/методу mysqli. см. http://docs.php.net/manual/en/mysqli-driver.report-mode.php – VolkerK

ответ

2

Там нет REMOVE ключевого слова в MySQL, используйте DELETE:

Delete from menu where fmenu = ?

+0

Вы - welocme :) – KAD

-1

правильное имя функции bindParam() не bind_param()

Изменить

$stmt->bind_param("i", $menu); 

в

$stmt->bindParam("i", $menu); 

Это позволит избавиться от сообщения об ошибке, что вы получаете. Затем вам нужно исправить ваш оператор SQL.

+1

Он использует MySQLi, а не PDO. Это [bind_param] (http://php.net/manual/en/mysqli-stmt.bind-param.php). Просто запрос не работает из-за неправильного синтаксиса. –

+0

ах, ты прав. мой мозг просто идет к PDO по defualt. Снабжение должным образом заработано. –

+0

Понятно. Как-то сейчас я чувствую себя плохим человеком: s –

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