Member 10011989 Ответов: 2

Mysql erroDuplicate запись '1' для ключа 'PRIMARY'


получение ошибки хотя в таблице нет записи
мне нужно вставить clgid в Каус и стол БТ и М ошибка за годы работы на первичный ключ .

$query="insert into clgmaster (ClgId,ClgName,ClgAddrs,FeeAmt,CntNo,Email,Pwd) values ($id,'$clgnm','$addrs',$fees,$cntno,'$eml','$pwd')";

    $result = mysql_query($query);//Excecuting clg query

    echo $result."<br>";

    echo "helllo query <br>";
    if ($result)
    {
        echo "<br>You Have Successfully REGISTERED this Record!";

    }

    $fetchData=mysql_query("select * from clgmaster");

    while($data=mysql_fetch_array($fetchData))
    {
        $id1= $data['ClgId'];
        echo $id1;

        //echo $data['ClgId'];
        echo "<br>";


    }

    //  **** inserting data into course table ****

    $query1="insert into course (ClgId,CourseName) values ($id1,$course)";
    echo $query1;

            $result1 = mysql_query($query1);//Executing course query
            echo $result1;

            if(!$result1)
            {
                die(" <br> Mysql erro".mysql_error());
            }
            else
                echo " <br> record inserted successfully in course";

2 Ответов

Рейтинг:
1

Wendelius

В принципе, есть два варианта для первичного ключа violaiton, либо запись уже существует, либо вы вызываете insert дважды (что в основном одно и то же).

Основываясь на вашем коде, это выглядит так, как будто вы извлекаете значение if Id после того, как вставили строку в clgmaster. Однако select не ограничивает никаких строк, поэтому вполне возможно, что вы действительно извлекаете случайную строку из clgmaster и используете этот идентификатор строк при вставке в курс. Поскольку вы только что вставили строку в clgmaster, необходимо ли вообще извлекать эту строку. Почему бы не использовать то же значение при вставке в курс, которое использовалось при вставке в clgmaster.


Member 10011989

спасибо Мистер венделиус ,
я попробовал это сделать, но все равно получаю ту же ошибку. я удалил всю запись и выполнил код bt, все еще получая ту же ошибку. мне нужно вставить то же самое значение clgid в таблицу курса . пожалуйста, предложите какую-нибудь идею. я запутался, что происходит не так с моим кодом, если вы найдете какой-нибудь плз, укажите мне

Wendelius

При ближайшем рассмотрении это выглядит так, как будто вы выполняете вставку в clgmaster дважды.

Вместо

$result1 = mysql_query($query);//выполнение запроса курса

пробовать

$result1 = mysql_query($query1);//выполнение запроса курса


Кроме того, если идея состоит в том, чтобы использовать общий идентификатор для clgmaster и курса, рассмотрите возможность упрощения кода до

$запрос="вставить в clgmaster (ClgId,ClgName,ClgAddrs,FeeAmt,CntNo,электронная почта,инвалидов) значения (с$ID,'$clgnm','$addrs',$сборы$cntno,'$Полс','$фрд')";

$result = mysql_query($query);//Excecuting clg query

echo $result."<br>";

echo "helllo query <br>";
if ($result)
{
Эхо "<br>Вы успешно зарегистрировали эту запись!";
}

// **** вставка данных в таблицу курса ****
$query1="вставить в курс (ClgId,CourseName) значения ($id,$course)";
echo $query1;

$result1 = mysql_query($query1);//выполнение запроса курса
Эхо $результат1;

if(!$result1)
{
die(" <br> Mysql erro".mysql_error());
}
еще {
Эхо " <br> запись успешно вставлена в курс";
}

Member 10011989

thhanks за то, что указал на мою глупую ошибку около $query1. та же проблема возникает и после изменений, которые вы предлагаете.
.когда я изменил свой запрос, вставив ручной clgid, то обнаружил странную ошибку, то есть неизвестный столбец " BSc " в "списке полей". где BSc-это имя моего имени курса. :(

Wendelius

Если

$query1="вставить в курс (ClgId,CourseName) значения ($id,$course)";

быть

$query1="вставить в курс (ClgId,CourseName) значения ($id,'$course')";

Member 10011989

спасибо, но я сделал это сам..
спасибо за Вашу поддержку..я очень благодарен вам

Wendelius

Не могли бы вы опубликовать полный код и еще раз объяснить, какая проблема у вас сейчас есть.

Member 10011989

да уж точно. я опубликовал свое решение

Рейтинг:
1

Member 10011989

Я пытаюсь вставить запись в 2 таблицы, которые находятся в отношениях первичного и внешнего ключей. но у меня была проблема с "дубликатом первичного ключа" ошибка несмотря на то, что стол полностью пустой.мне нужно вставить clgId и в таблице это будет внешним ключом для таблицы поле .так вот я решил эту проблему с помощью эксперта Мистера Мики

вот мое полное решение

Цитата:
// **** Вставка данных в таблицу clgmaster ****

$запрос="вставить в clgmaster (ClgId,ClgName,ClgAddrs,FeeAmt,CntNo,электронная почта,инвалидов) значения (с$ID,'$clgnm','$addrs',$сборы$cntno,'$Полс','$фрд')";

$result = mysql_query($query);//Excecuting clg query

echo $result."
";

if ($result)
{
эхо "
Вы успешно зарегистрировали эту запись!";

}
еще
умирать("
mysql error ".mysql_error()); //проверка на наличие ошибки
эхо "
";

// **** вставка данных в таблицу курса ****

$query1="вставить в курс (ClgId,CourseName) значения ($id,'$course')";
echo $query1;

$result1 = mysql_query($query1);//выполнение запроса курса

if(!$result1)
{
умирать("
В MySQL Эрро".mysql_error());
}
еще
эхо "
запись успешно вставлена в курс";
}