2009-11-02 6 views
0

Je sais que ma connexion à la base de données fonctionne, et un test que j'ai fait en utilisant pas d'ID auto-incrémentation a bien fonctionné. Le code ci-dessous refuse de travailler et je ne trouve pas de solution. Ma table a 3 colonnes, ID (auto increment), nom et valeur. Que dois-je changer pour que cela fonctionne?Impossible d'insérer des données dans des tables contenant la clé primaire d'incrémentation automatique en utilisant les instructions préparées PHP

Merci à l'avance

//create placeholder query 
$query = "INSERT INTO prepared_test (name, value) VALUES (?,?)"; 

//prepare the query 
$stmt = mysqli_prepare($connection, $query); 

$name = 'steve'; 
$value = 45; 

mysqli_bind_param($stmt, array(MYSQLI_BIND_STRING, MYSQLI_BIND_INT), $name, $value); 
mysqli_execute($stmt); 

if(mysqli_stmt_affected_rows($stmt) != 1) 
    die("issues"); 

mysqli_stmt_close($stmt); 

$connection->close(); 

Répondre

3

mysqli_bind_param est dépréciée et est juste un alias de mysqli_stmt_bind_param, mysqli_stmt_bind_param attend les types de Bind pour être une chaîne pas un tableau. alors change juste cette ligne.

mysqli_stmt_bind_param($stmt, 'si', $name, $value); 
+0

Cheers man, a travaillé un régal! :) – Drew

0

Je vous recommandons d'utiliser AOP (http://ar2.php.net/PDO). Il est un objet interface orientée pour différentes bases de données, il a une syntaxe plus propre et résumés vous du SGBDR;)

+1

Il a demandé pourquoi il ne peut pas insérer et non ce qui a la syntaxe scleaner. – streetparade

+0

Ouais, je viens de donner un conseil :) – alcuadrado