Вставить обновление при дублировании этого запроса на основе идентификатора сеанса - PullRequest
0 голосов
/ 27 февраля 2019

Моя система заставляет пользователя вводить счет, который затем добавляется в базу данных через этот php.Он будет обновляться только в том случае, если значение уже было вставлено (в настоящее время) - есть ли способ использовать обновление вставки в дубликате с использованием этого синтаксиса, позволяющего обновлять счет на основе идентификатора SESSION?

My Database

<?php
include("php/functions.php");
include('connections/conn.php');
$userID = $_SESSION["userID"];


//echo "all good here";



$newsselfesteemscore = mysqli_real_escape_string($conn, $_POST['selfesteemscore']);

/**$insertquery1 = "UPDATE selfesteemscore SET selestscore = '$newsselfesteemscore' , UserID = '$userID' ";**/

$insertquery1 = "UPDATE selfesteemscore SET selestscore = '$newsselfesteemscore' WHERE UserID = '$userID' ";

$result1 = mysqli_query($conn, $insertquery1) or die(mysqli_error($conn));

mysqli_close($conn);
?> 

Попытка ниже

$newsselfesteemscore = mysqli_real_escape_string($conn, $_POST['selfesteemscore']);


$insertquery1 = "INSERT INTO selfesteemscore(selestscore, UserID) VALUES('$newsselfesteemscore', '$userID')"
        . " ON DUPLICATE KEY UPDATE selfesteemscore SET selestscore = '$newsselfesteemscore' WHERE UserID = '$userID' "; 
var_dump(mysqli_error($conn));

$result1 = mysqli_query($conn, $insertquery1) or die(mysqli_error($conn));

mysqli_close($conn);
?> 

Ошибка, возникающая после удаления компонента WHERE

string(0) "" 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 'SET selestscore = '17' , UserID = '25'' at line 1

$insertquery1 = "INSERT INTO selfesteemscore(selestscore, UserID) VALUES('$newsselfesteemscore', '$userID')"
        . " ON DUPLICATE KEY UPDATE selfesteemscore(selestscore, UserID) VALUES ('$newsselfesteemscore' , UserID = '$userID') "; 
var_dump(mysqli_error($conn));

$result1 = mysqli_query($conn, $insertquery1) or die(mysqli_error($conn));

mysqli_close($conn);
?> 

string(0) "" 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 '(selestscore, UserID) VALUES ('17' , UserID = '25')' at line 1

1 Ответ

0 голосов
/ 27 февраля 2019

В документации приведен синтаксис INSERT .. ON DUPLICATE KEY UPDATE.Ваш запрос должен выглядеть следующим образом:

$insertquery1 = "INSERT INTO selfesteemscore(selestscore, UserID) VALUES('$newsselfesteemscore', '$userID')"
        . " ON DUPLICATE KEY UPDATE selestscore = '$newsselfesteemscore', UserID = '$userID' "; 

Однако, если userID является уникальным ключом, не обновляйте его:

$insertquery1 = "INSERT INTO selfesteemscore(selestscore, UserID) VALUES('$newsselfesteemscore', '$userID')"
        . " ON DUPLICATE KEY UPDATE selestscore = '$newsselfesteemscore' "; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...