这是有问题的代码。
<?php
//Values from the submit post from Submit
if ( isset($_POST['submit']) ) {
//Values from the RadioBox
if ( !empty($_POST['q1']) ) {
$q1 = $_POST['q1'];
echo $q1;
}
}
//DATA login $querydata="SELECT CURDATE()";
$result_data = mysqli_query($link, $querydata);
$data = mysqli_fetch_array($result_data)[0];
?>
<?php
if ( isset($_POST['q1']) ) { //Insert radiobox values
$q2 = $_POST['q1'];
$queryselect = 'INSERT INTO users (user_id,user_log, league_id) VALUES('.$_SESSION['user_id'].','.$q2.','.$data.')';
$resulta = mysqli_query($link, $queryselect);
//header( "refresh:2;url=profile.php" );
}
?>
错误:错误查询#1重复'PRIMARY'的条目'1'
请给我们解决方案,我很感激。
由于
答案 0 :(得分:0)
该错误是由于users表中已存在ID为1的user_id。您可能希望使用如下所示的update查询来更新行而不是插入新行:
$queryselect="UPDATE users SET user_log = '$q2',league_id = '$data' WHERE user_id = {$_SESSION['user_id']}";
确保在SQL查询中使用变量之前也对变量进行了转义,以避免可能的SQL注入:)。
答案 1 :(得分:0)
首先,不需要这些陈述,
$querydata="SELECT CURDATE()";
$result_data= mysqli_query($link, $querydata);
$data=mysqli_fetch_array($result_data)[0];
您可以在查询中直接使用CURDATE()
功能。其次,用户已经存在,这就是您在INSERT
操作期间收到此错误的原因。您必须执行UPDATE
操作并更新现有行。
您的代码应该是这样的:
<?php
if(isset($_POST['submit'])){
if(isset($_POST['q1']) && !empty($_POST['q1']) {
$q2 = $_POST['q1'];
$queryselect = "UPDATE users SET user_log = '" . $q2. "', league_id = CURDATE() WHERE user_id = '" . $_SESSION['user_id'] . "'";
$resulta=mysqli_query($link, $queryselect);
// redirect user to different page
header("Location: yourpage.php");
exit();
}
}
?>
旁注:请参阅this SO question以了解有关标头重定向问题的更多信息。