2015-04-08 2 views
-3

Я пытаюсь обновить значение из моей базы данных SQL. Но что-то не работает, но я не знаю почему. Это insert.php:MySQL UPDATE не работает с PHP, если

<?php 
session_start(); 
header('content-type: text/html; charset=utf-8'); 
$id = $_GET["id"]; 
$rating = $_GET["rating"]; 

$con = mysql_connect("localhost", "...", "..."); 
mysql_select_db('...',$con); 
mysql_query("SET NAMES 'utf8'"); 
echo mysql_error(); 

if($rating=='likes' || $rating=='dislikes'){ 
if($rating=='likes'){ 
    $sql1 = "UPDATE artikel SET likes='likes+1' WHERE id='$id'"; 
    mysqli_query($con, $sql1); 
    echo "Danke für deine Bewertung!"; 
} else { 
    $sql2 = "UPDATE artikel SET dislikes='dislikes+1' WHERE id='$id'"; 
    mysqli_query($con, $sql2); 
    echo "Danke für deine Bewertung! Nutze doch auch die Kommentarfunktion, um uns zu sagen was dir nicht gefallen hat."; 
}} else { 
    echo "Es ist ein Fehler aufgetreten. Probiere es bitte noch einmal."; 
} 


?> 
+2

Прежде всего используйте mysqli_ *, потому что mysql_ * устарел. dont mix them –

+0

Вы не можете смешивать mysql_connect с mysqli_query – Shaeldon

+0

Это условие является устаревшим 'if ($ rating == 'нравится' || $ rating == 'dislikes') {' –

ответ

0

Попробуйте удалить цитату из симпатий или антипатий:

$sql1 = "UPDATE artikel SET likes=likes+1 WHERE id='$id'"; 
$sql2 = "UPDATE artikel SET dislikes=dislikes+1 WHERE id='$id'"; 
1

Помимо того, что вы смешиваете MySQLi и MySQL (использовать только MySQLi или PDO), как указано в комментарии, у вас есть логическая ошибка в вашем SQL:

$sql1 = "UPDATE artikel SET likes='likes+1' WHERE id='$id'"; 

Это будет пытаться установить значение likes поля в строку "likes+1". Если вы хотите обновить свою ценность likes, вам необходимо удалить кавычки:

$sql1 = "UPDATE artikel SET likes=likes+1 WHERE id='$id'"; 

То же самое относится и к вашей другой SQL заявления.

Кроме того, у вас также есть проблема с впрыском sql. Вы должны использовать только PDO или mysqli и использовать подготовленный оператор. Ваше заявление будет выглядеть что-то вроде:

$sql1 = "UPDATE artikel SET likes=likes+1 WHERE id=?"; 

Тогда вы готовите это утверждение, связать переменную с заполнителем (вопросительный знак), и вы ее выполнить.