Нравится и не нравится только один раз php JS mySQL

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

Notice: Object of class mysqli_result could not be converted to int

Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE v_id='34'' at line 1

<?php
session_start();
include "config.php";

if ( !empty( $_GET['$v_id'] ) ){

    $vid = $_SESSION['v_id'] = $_GET['$v_id'];

$sql='SELECT video_name FROM video WHERE v_id=?';
    $stmt=$link->prepare( $sql );
    $stmt->bind_param('i', $vid );
    $res=$stmt->execute();
    if ( $res ){
        $stmt->store_result();
        $stmt->bind_result( $videoname );
        $stmt->fetch();

        printf('
            <video width = "70%%" height = "70%%" style = "background-color:#585858; border: 4px solid darkorange; border-radius:20px;" controls>
                <source src = "uploads/%s" type = "video/mp4" id = "vid">
            </video>
        ', $videoname );
    }
} else {
    exit('missing ID');
}
$lk = mysqli_query($link, "SELECT likes FROM video WHERE v_id='$vid'");
$likeCount = 0;
$sumlk = ($lk + $likeCount);
$liked = mysqli_query($link, "INSERT INTO video(likes) VALUES('$sumlk') WHERE v_id='$vid'");
?>
<br>
<a href = "#" onclick = "like(event)"><img src = "imageStoring/like.png" style = "height:30px;" /></a><?php echo '$liked'; ?>
<img src = "imageStoring/dislike.png" style = "height:30px;"/>

<?php
$func = <<<EOD
<script type = "text/javascript">
function like(event){
'$likeCount' = 1;
}
</script>
EOD;
?>

Ниже mySQL,

CREATE TABLE video(
v_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
video_name VARCHAR(225) NOT NULL,
id INT NOT NULL,
FOREIGN KEY user_id(id)
REFERENCES users(id)
ON DELETE CASCADE,
n_views INT,
likes INT,
dislikes INT,
image_name VARCHAR(225) NOT NILL
);

И что вы пытались решить? Очевидно, что вы не можете использовать результат mysqli_query в сложении

Nico Haase 25.02.2019 17:35

Предложение WHERE не имеет смысла в утверждении INSERT. Обратитесь к руководству по синтаксису INSERT: dev.mysql.com/doc/refman/8.0/en/insert.html Или вы хотели вместо этого выполнить UPDATE? dev.mysql.com/doc/refman/8.0/en/update.html

David 25.02.2019 17:37

Если v_id является INT, я думаю, вам не нужны одинарные кавычки вокруг него, это будет относиться к нему как к строке.

dmikester1 25.02.2019 17:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
92
2

Ответы 2

mysqli_query возвращает объект результата. В этом объекте результата вы можете использовать такие методы, как fetch_assoc(), чтобы получить фактические строки и столбцы, которые вы запрашиваете.

если вы хотите изменить значение, где v_id = значение you_actula вы должны использовать обновление, а не вставку

   UPDATE video 
   set likes = '$sumlk'
   WHERE v_id='$vid'

в любом случае вы не должны использовать php var в sql, вы должны использовать подготовленный оператор и параметр привязки, как в вашем первом выборе

Я перешел с использования вставки на обновление, как вы сказали. Однако лайк остается только один для всех аккаунтов, которым он понравился. Я также все еще получаю эту ошибку; Примечание: объект класса mysqli_result не может быть преобразован в int

Daniel dos Santos 25.02.2019 17:52

Ошибка, потому что вы пытаетесь повторить результат для mysqli_result .. с <?php echo '$liked'; ?> .. результат запроса не число, а объект .. вы должны взглянуть на php mysqli_query

ScaisEdge 25.02.2019 18:00

Другие вопросы по теме