2016-05-12 2 views
-1

Привет, я хочу создать подобную систему с использованием PHP и MySQL при нажатии на нее. Я также вставляю данные в базу данных, но вставляется значение базы данных ошибок, но как значение как 0 нет приращения и неопределенной ошибки. Помогите мне решить эту проблемуПоказать сообщение об ошибке при нажатии на кнопку

There is my Like button code : 

<?php 
    //// work with like box 
     $get_likes = mysqli_query($con,"SELECT * FROM `likes`"); 
     if (mysqli_num_rows($get_likes)===1) { 

      $get = mysqli_fetch_assoc($get_likes); 
      // $uid = $get['uid']; 
      $total_likes = $get['total_likes']; 
      //echo $uid; 
      $total_likes = $total_likes + 1; 
      //echo $total_likes++; 
     } 

    if (isset($_POST['likebutton_'])) { 
     $like = mysqli_query($con,"UPDATE `likes` SET `total_likes` = '$total_likes'") or die(mysqli_error($con)); 

    //$insert_Data = mysqli_query($con,"INSERT INTO `likes` (`uid`) VALUES('$username')") or die(mysqli_error($ocn)); 
    header("Location:home.php"); 

    } 

    else 
    { 
     echo "Error"; 
    } 
    ?> 
    this code work fine without insert Data 
    There is My liked with Data Insertd Code 
    <?php 
    ////work with like box 
     $get_likes = mysqli_query($con,"SELECT * FROM `likes`"); 
     if (mysqli_num_rows($get_likes)===1) { 

      $get = mysqli_fetch_assoc($get_likes); 
      // $uid = $get['uid']; 
      $total_likes = $get['total_likes']; 
      //echo $uid; 
      $total_likes = $total_likes + 1; 
      //echo $total_likes++; 
     } 

    if (isset($_POST['likebutton_'])) { 
     $like = mysqli_query($con,"UPDATE `likes` SET `total_likes` = '$total_likes'") or die(mysqli_error($con)); 

    $insert_Data = mysqli_query($con,"INSERT INTO `likes` (`uid`) VALUES('$username')") or die(mysqli_error($ocn)); 
    header("Location:home.php"); 

    } 

    else 
    { 
     echo "Error"; 
    } 
    ?> 
    this is output i want to display my font-end page <?php echo $total_likes ;?> but it occur error 

    The error is Undefined Variable 
I also try $total_likes=""; 
as global but still not work 
+0

Можете ли вы добавить свой код для формы, базы данных и интерфейсной страницы, на которой вы хотите отобразить результат? – Richard

+0

Вам не нужно, чтобы 'lik' просто обновил mysql текущую строку + 1. Вы открыты для SQL-инъекций с помощью этого кода. Также не следует ли передавать идентификатор, чтобы вы не обновляли каждую запись? – chris85

+0

Проблема, с которой вы сталкиваетесь, заключается в том, что 'mysqli_num_rows ($ get_likes)' не равно '1'. Вы только присваиваете '$ total_likes', если счет равен 1. – chris85

ответ

0

Ваш код страдает от состояния гонки. То, что вы должны делать это шаблон:

INSERT INTO likes (uid, total_likes) VALUES (?, 1) 
    ON DUPLICATE KEY SET total_likes=total_likes+1 

Где вы используете bind_param установить значение заполнителя для вашего UID.

Обратите внимание, что в одном запросе вы устанавливаете общее количество все нравится быть +1. Это огромная ошибка.

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