web-dev-qa-db-fra.com

Insérer des données dans une table (mysqli insert)

Je regarde ce code depuis un moment et je ne vois pas où est le problème. J'ai lu l'ensemble de StackOverflow et je ne vois toujours pas où se trouve mon erreur. 

<?php

mysqli_connect("localhost","root","","web_table");
mysql_select_db("web_table") or die(mysql_error());

if (mysqli_connect_errno()) {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();

}
echo "<p> Connection Successful!"

mysqli_query('INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)');


echo "<p>Insert successfull";

?>

L'erreur est quelque part dans la ligne 13, c'est mysqli_query('insert.... J'ai essayé de m'aider avec http://www.w3schools.com/php/php_mysql_insert.asp mais cela ne m'aide pas beaucoup.

11
Blue

Avertissement: Ne faites jamais référence à w3schools à des fins d'apprentissage. Ils ont tellement d'erreurs dans leurs tutoriels.

Selon la documentation mysqli_query , le premier paramètre doit être une chaîne de connexion:

$link = mysqli_connect("localhost","root","","web_table");

mysqli_query($link,"INSERT INTO web_formitem (`ID`, `formID`, `caption`, `key`, `sortorder`, `type`, `enabled`, `mandatory`, `data`)
VALUES (105, 7, 'Tip izdelka (6)', 'producttype_6', 42, 5, 1, 0, 0)") 
or die(mysqli_error($link));

Remarque: Ajoutez des backticks `pour les noms de colonne dans votre requête d'insertion, car certains de vos noms de colonne sont des mots réservés.

24
Rikesh

Dans mysqli_query (le premier paramètre devrait être connection, votre déclaration sql) So

$connetion_name=mysqli_connect("localhost","root","","web_table") or die(mysqli_error());
mysqli_query($connection_name,'INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)');

mais la meilleure pratique est

$connetion_name=mysqli_connect("localhost","root","","web_table") or die(mysqli_error());
$sql_statement="INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)";
mysqli_query($connection_name,$sql_statement);
3

Bien sûr, on a répondu à la question, mais personne ne semble remarquer la troisième ligne de votre code. Cela m'a continuellement dérangé. 

    <?php
    mysqli_connect("localhost","root","","web_table");
    mysql_select_db("web_table") or die(mysql_error());

pour une raison quelconque, vous avez établi une connexion mysqli au serveur, mais vous essayez de créer une connexion mysql à la base de données.Pour commencer, utilisez plutôt

       $link = mysqli_connect("localhost","root","","web_table");
       mysqli_select_db ($link , "web_table" ) or die.....

ou pour où j'ai commencé

     <?php $connection = mysqli_connect("localhost","root","","web_table");       
      global $connection; // global connection to databases - kill it once you're done

ou interrogez simplement avec un paramètre $ connection comme autre argument, comme ci-dessus. Débarrassez-vous de cette troisième ligne.

0

Lorsque vous utilisez les fonctions php mysqli, gardez à l’esprit que les détails de la connexion sont mentionnés en premier, puis la requête est transmise à la fonction

$cid=mysqli_connect("server", "username", "password", "database_name") or die (mysql_error());
mysqli_query($cid, $query) or die (mysqli_error($cid));
$result=mysqli_affected_rows($cid);
if($result===TRUE)
  echo"The query ran successfully";
else
  echo"The query did not run";
mysqli_close($cid);

Gardez à l'esprit que $ cid est la variable qui contient les données de connexion dans les codes ci-dessus. 

0
Vikash Mishra