2012-05-11 6 views
0

Я пытаюсь получить ссылку DELETE, напечатанную рядом с каждым $row. Кроме того, на другой странице есть ссылка «СКАЧАТЬ» - они должны работать одинаково. Проблема заключается в следующем: я получаю как DELETE, так и DOWNLOAD для печати рядом с каждой записью, но с использованием кода, который у меня есть, ничего не происходит, или мой скрипт берет на себя ошибку. По какой-то причине у меня самые сложные функции моего сайта, но это все еще ускользает от меня. Вот несколько кодов:mysqli DELETE не работает

while ($row = mysqli_fetch_array($r,MYSQLI_ASSOC)) 
    { 
    echo '<tr><td align="left">' . 
    $row['title'] . '</td><td align="left">' 
    . $row['genre'] . '</td><td align="left">' 
    . $row['length'] . '</td><td align="left">' 
    . $row['created'] . '</td><td align="left">' 
    . $row['views'] . '</td><td align="left">' 
    . "<a href='wprofile.php?id={$row['upload_id']}'>Delete</a></td> . '</td></tr>'; 
    } 

и на одной и той же странице php У меня есть эта логика, которая терпит неудачу. например, для удаления, но для моей проблемы со связью DOWNLOAD возникает тот же самый отказ.

if(isset($_GET['upload_id'])) 
    { 
    $id = intval($_GET['upload_id']); 

    require_once (dbconnectionpath); 

    $delquery = "DELETE FROM 'upload' WHERE 'upload_id' = {$id}"; 
    $done = @mysqli_query ($dbc, $delquery); //run the query 

    if($done) { 
    if (mysqli_num_rows($done)==1) { 
    echo 'Record deleted'; 
    } 
    else{ 
    echo 'Delete failed'; 
    } 

    @mysqli_free_result($result); 
    } 
    else{ 
    echo "Error! Query failed: <pre>{$dbc->error}</pre>"; 
    } 
    mysqli_close(dbconnection); 

ошибка я получаю "Ошибка, запрос не удалось"

+2

Что говорит '$ dbc-> error'? Удаление '@' также может помочь. –

+0

Или 'mysqli_error', для согласованности – Amadan

+0

Хороший вызов, эта ошибка ничего не выводит, он просто говорит:« Ошибка! Запрос не выполнен: [пустое место], что строка была заимствована кодом, go figure. – V1GG3N

ответ

0

if(isset($_GET['upload_id'])) изменение if(isset($_GET['id']))

и $id = intval($_GET['id']);

HTML, параметр ID, не upload_id

+0

Я только что сделал это и изменил на mysqli_error. Теперь нет ошибки, перенаправляется на .php? Id = ... записывать еще в БД – V1GG3N

0

В вашей ссылке, вы по всей видимости, установка id:

<a href='wprofile.php?id={$row['upload_id']} ... 

но ваш код ссылки $_GET['upload_id']. Другими словами, вы ссылаетесь на неправильное имя в своем коде. Либо используйте id в коде или upload_id по ссылке.

Еще одна вещь, хотя это может быть просто из-за того, что я не могу видеть весь HTML-код, похоже, у вас есть много </td> элементов в вашем коде. Проверьте тот, который находится в конце вашей линии связи, хотя, как указано, это может закрыть предыдущий <td>, который не показан.


Если, как вы говорите в комментариях, ваш «просмотреть исходный код» показывает ссылку как:

<a href='newwriter_profile.php?id='>Delete</a></td> 

то есть что-то не так с вашим созданием этой HTML ссылки.

Есть много вещей, которые могут быть неправильными там, первая пара, которая приходит на ум, заключается в том, что ваш исходный запрос не содержит update_id, или идентификатор действительно пуст для строки, которую вы ищете в.

Перед созданием линии ссылок HTML проверьте значение $row['update_id'], что должно подтвердить или опровергнуть эту гипотезу как минимум. Кроме того, вам нужно выяснить , почему ваша ссылка неверна.


Одна вещь, которую я есть просто заметил, что вы можете захотеть взглянуть на, ваше использование цитат:

$delquery = "DELETE FROM 'upload' WHERE 'upload_id' = {$id}"; 

Теперь я знаю, что MySQL использует кавычку иногда защитить имена таблиц и столбцов от неправильного разбора (например, с select `column with spaces` from tbl1 ...), но ваш код, похоже, имеет одинарные кавычки, а не обратные ссылки.

Это еще одна вещь, чтобы проверить. Может быть, что предложение where в вашем запросе сравнивает строку литерала с надписью «upload_id» с вашей переменной, вместо сравнения столбца upload_id.

Это может объяснить, почему ваш delete не попадает ни в какие строки, так как ваш идентификатор (возможно) является автоматически увеличивающимся целым полем, что означает, что он никогда не будет равен нецифровому строковому литералу.

+0

Я исправил это. Я перенаправлен на мой ahref, но нет идентификатора (profile.php? Id =), и запись по-прежнему находится в базе данных, без ошибок. УДАЛИТЬ , вы были правы, но это все еще спасает меня без ошибок – V1GG3N

+0

@ V1GG3N, это вопрос _different_ и должен быть задан как таковой. Исходная проблема решена, и вы получите более широкий ответ, если вы задайте новый вопрос с более новыми деталями, вместо того, чтобы просто оставить комментарий, - который также будет лучше обслуживать SO Q & A. Тем не менее, я бы сделал «источник просмотра» на странице с кнопками удаления, чтобы обеспечить корректное вывод href. – paxdiablo

+0

отметил, спасибо, я задам новый вопрос. fyi Delete is my viewsource – V1GG3N

0

Попробуйте удалить фигурные скобки, beacuse при печати из запроса создан, он показывает значение из id с фигурными фигурными скобками, что может привести к не удалению идентификатора.

Это должно работать: «УДАЛИТЬ ОТ загрузки WHERE upload_id = $ id»;

Во избежание перемещения страницы на другую страницу используйте функцию safedefault js.