Question

Sur un de mes pages php, je continue à obtenir l'erreur suivante:

SQLSTATE [23000]: Intégrité violation de contrainte: 1062 entrée en double '0' pour la touche 'primaire'

Je ne sais pas pourquoi ou si cela se produit, ce qui est la raison pour laquelle je poste cette question.

Je pense que ça se passe dans cette séquence quelque part de code.

// create user

$STH = $DBH -> prepare( "insert into users ( display_name, oauth_provider, oauth_uid ) values ( :value, :oauth_provider, :id )" );

$STH -> bindParam( ':value', $value, PDO::PARAM_STR, 255 );
$STH -> bindParam( ':id', $oauth_id, PDO::PARAM_STR, 255 );
$STH -> bindParam( ':oauth_provider', $oauth_provider, PDO::PARAM_STR, 255 );

$STH -> execute();

// get newly created user

$STH = $DBH -> prepare( "select * from users where oauth_uid = :id and ( display_name = :value or email = :value ) and oauth_provider = :oauth_provider" );

$STH -> bindParam( ':value', $value, PDO::PARAM_STR, 255 );
$STH -> bindParam( ':id', $oauth_id, PDO::PARAM_STR, 255 );
$STH -> bindParam( ':oauth_provider', $oauth_provider, PDO::PARAM_STR, 255 );

$STH -> execute();

$result = $STH -> fetch();

// create settings record with 0's

$STH = $DBH -> prepare( "insert into settings ( col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, user_id ) values ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, :id )" );

$STH -> bindParam( ':id', $result["id"], PDO::PARAM_INT, 4 );

$STH -> execute();

Comment puis-je savoir quelle partie est à l'origine du problème?

Était-ce utile?

La solution

il est de pas mysql par rapport au code

déposer la colonne de auto_increment alter clé primaire à une fois et

ajouter à nouveau la touche

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top