2015-04-21 1 views
1

Ceci a été reposté de dba.stackexchange.SQL avec HTTP/1.1 Get

Désolé pour une telle question d'amateur, mais je ne sais pas pourquoi cela ne fonctionne pas. J'ai un "add.php" pour se connecter au serveur MySQL.

/add.php

<?php 
    include("connect.php"); 

    $link=Connection(); 

    $ID1=$_POST["ID1"]; 
    $ID2=$_POST["ID2"]; 
    $ID3=$_POST["ID3"]; 
    $ID4=$_POST["ID4"]; 
    $ID5=$_POST["ID5"]; 

    $query = "INSERT INTO Battery (ID01, ID02, ID03, ID04, ID05) 
     VALUES ('".$ID1."','".$ID2.",'".$ID3.",'".$ID4."','".$ID5."')"; 

    mysql_query($query,$link); 
    mysql_close($link); 

    header("Location: index.php"); 
?> 

protocole connect.php

<?php 

    function Connection(){ 
     $server="mysql.randomserver.com"; 
     $user="random"; 
     $pass="1234"; 
     $db="random_1234"; 

     $connection = mysql_connect($server, $user, $pass); 

     if (!$connection) { 
      die('MySQL ERROR: ' . mysql_error()); 
     } 

     mysql_select_db($db) or die('MySQL ERROR: '. mysql_error()); 

     return $connection; 
    } 
?> 

J'utilise simple HTTP 1.1:

GET /add.php?ID1=1int&ID2=2char&ID3=3char&ID4=4int&ID5=2015-04-13 01:00:00 HTTP/1.1\r\nmyhost\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection:close\r\n\r\n\r\n

ID1, ID4 est int ; ID2, ID3 char; ID5 Datetime (SQL)

L'hôte me jette cette erreur:

+IPD,168:<html> 
<head><title>400 Bad Request</title></head> 
<body bgcolor="white"> 
<center><h1>400 Bad Request</h1></center> 
<hr><center>hosting</center> 
</body> 
</html> 

Si quelqu'un a une idée pour moi d'essayer, je serais reconnaissant! Je suis vraiment désemparés ...

fixe: (Moskito-x) « » $ ID3.. " à « ',

Mettre à Jour" $ ID3.».: 2015,04. 22 13:56

Ok, j'ai essayé cela et il fonctionne sur ma page d'accueil: index.php (il suffit de copier le tout code /add.php dans index.php)

$query= "INSERT INTO Battery (ID01,ID02,ID03,ID04,ID05) 
     VALUES ('1int','2char','3char','4int','2015-04-22 17:20:28')"; 
$result = mysqli_query($link, $query) 

Mais si je remplacez-le par add.php, aucune ligne n'est insérée.

j'ai changé add.php que d'autres ont suggéré:

add.php

<?php 
    $link=Connection(); 
     $server="mysql.myhost.com"; 
     $user="randomUser"; 
     $pass="randomPwd"; 
     $db="radomdb"; 

    $link=mysqli_connect($server, $user, $pass, $db); 


    $query = "INSERT INTO Battery (ID01,ID02,ID03,ID04,ID05) 
     VALUES ('1int','2char','3char','4int','2015-04-22 17:20:28')"; 
    mysqli_query($link, $query) 
      mysqli_close($link); 
    header("Location: index.php"); 
?> 
+0

Je ne sais pas si votre syntaxe est correcte mysql_query: http://php.net/manual/en/function.mysql-query.php Est-ce que vous avez des rapports d'erreur est activée pour votre code php? – Maximus2012

+0

Il vous manque au moins un '\ n' dans cette commande' GET'. –

+2

S'il vous plaît être conscient que les fonctions de 'mysql_' ne sont désormais plus seulement découragé (comme il a été au cours des dernières années), mais officiellement (http://php.net/manual/en/migration55.deprecated.php) [Obsolète] . Vous devriez vraiment utiliser [MySQLi] (http://php.net/manual/fr/book.mysqli.php) ou [PDO] (http://php.net/manual/fr/ref.pdo-mysql.php), car ce code cessera de fonctionner très bientôt. – Oldskool

Répondre

1

partie importante $link=Connection();

  • Nous ne pouvons pas voir le code de Connection();
  • votre la requête est erronée
  • mentionné dans les commentaires -> vous utilisez un http GET donc $ID1=$_POST["ID1"]; a tort de.

'".$ID1."','".$ID2.",'".$ID3.",'".$ID4."','".$ID5."')"; 
//     |   | 
//     |_________|____ here forget ' 

$query = "INSERT INTO Battery (ID01, ID02, ID03, ID04, ID05) 
    VALUES ('".$ID1."','".$ID2."','".$ID3."','".$ID4."','".$ID5."')"; 

EDIT

Maintenant, nous pouvons voir dans votre question Edité

where ID1,ID4 is int; ID2, ID3 char; ID5 TimeStamp

requête doit être (en supposant TimeStamp = "20150421225300") format de chaîne.

$query = "INSERT INTO Battery (ID01, ID02, ID03, ID04, ID05) 
    VALUES (".$ID1.",'".$ID2."','".$ID3."',".$ID4.",'".$ID5."')"; 
+0

@NhanLe La requête est mauvaise aussi. – baquiax

+0

@ moskito-x Il suffit de mettre à jour la fonction Connection() –

+0

@NhanLe: Résolvez d'abord votre requête invalide. –

1

Votre demande http que vous montrez dans votre message (_ représente une ligne vide):

GET /add.php?ID1=1int&ID2=2char&ID3=3char&ID4=4int&ID5=2015-04-13 01:00:00 HTTP/1.1 
myhost 
Content-Type: application/x-www-form-urlencoded 
Connection:close 
_ 
_ 
_ 

Il est en effet un bad request parce que (a) vous avez des caractères blancs unescaped dans l'URI et (b) la deuxième ligne se lit juste myhost quand vous avez probablement signifié Host: myhost (c) vous avez supplémentaire \r\n (pas susceptible de causer des ennuis si), de sorte que quelque chose comme ça:

POST /add.php?ID1=1int&ID2=2char&ID3=3char&ID4=4int&ID5=2015-04-13+01:00:00 HTTP/1.1 
Host: myhost 
Content-Type: application/x-www-form-urlencoded 
Connection:close 
_ 
_ 

Et bien sûr ce que d'autres ont dit à propos des injections SQL s'applique.

+0

hé merci pour votre réponse, je dois encore faire le PHP pour insérer correctement à la table SQL. S'il vous plaît jeter un oeil à ma mise à jour, avez-vous des suggestions? –