Я в настоящее время поставлен в тупик на проблеме. Я пытаюсь добавить кнопки «нравится» и «не нравится» для отображаемого видео, однако пользователь может лайкнуть его только один раз, а не несколько раз. Я получаю следующие ошибки,
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
);
Предложение WHERE не имеет смысла в утверждении INSERT. Обратитесь к руководству по синтаксису INSERT: dev.mysql.com/doc/refman/8.0/en/insert.html Или вы хотели вместо этого выполнить UPDATE? dev.mysql.com/doc/refman/8.0/en/update.html
Если v_id является INT, я думаю, вам не нужны одинарные кавычки вокруг него, это будет относиться к нему как к строке.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


mysqli_query возвращает объект результата. В этом объекте результата вы можете использовать такие методы, как fetch_assoc(), чтобы получить фактические строки и столбцы, которые вы запрашиваете.
если вы хотите изменить значение, где v_id = значение you_actula вы должны использовать обновление, а не вставку
UPDATE video
set likes = '$sumlk'
WHERE v_id='$vid'
в любом случае вы не должны использовать php var в sql, вы должны использовать подготовленный оператор и параметр привязки, как в вашем первом выборе
Я перешел с использования вставки на обновление, как вы сказали. Однако лайк остается только один для всех аккаунтов, которым он понравился. Я также все еще получаю эту ошибку; Примечание: объект класса mysqli_result не может быть преобразован в int
Ошибка, потому что вы пытаетесь повторить результат для mysqli_result .. с <?php echo '$liked'; ?> .. результат запроса не число, а объект .. вы должны взглянуть на php mysqli_query
И что вы пытались решить? Очевидно, что вы не можете использовать результат
mysqli_queryв сложении