我的查询radiocheck需要帮助

时间:2015-12-27 10:16:02

标签: php sql phpmyadmin

这是有问题的代码。

<?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'

请给我们解决方案,我很感激。

由于

2 个答案:

答案 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以了解有关标头重定向问题的更多信息。