Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [PHP/SQP] INSERT INTO wird nicht ausgeführt (https://www.delphipraxis.net/32933-%5Bphp-sqp%5D-insert-into-wird-nicht-ausgefuehrt.html)

TheMiller 29. Okt 2004 23:43


[PHP/SQP] INSERT INTO wird nicht ausgeführt
 
Hey Leute,

bin am verzweifeln... Habe diesen Code:

SQL-Code:
global $db_server,$db_user,$db_passwort, $db_name;
  $db = @MYSQL_PCONNECT($db_server,$db_user,$db_passwort)
    or die ("Konnte keine Verbindung zur Datenbank herstellen");
  $db_check = @MYSQL_SELECT_DB($db_name); if($db)   echo "Verbindung zur Datenbank wurde hergestellt";

$result = mysql_query("INSERT INTO 11-04 (ra)
           VALUES ('j')");
$eintragen = mysql_query($result);
echo $result;
echo mysql_error();
Dann lade ich den Script hoch und führe ihn per Delpi so aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sl : TStringlist;
begin
  sl := TStringList.Create;
  sl.Add('$db_server='+Edit1.Text);
  sl.Add('$db_name='+Edit2.Text);
  sl.Add('$db_user='+Edit3.Text);
  sl.Add('$db_passwort='+Edit4.Text);
  sl.Add('$mode=insert');
  Memo1.Text := idHttp1.Post('http://www.xxxx.com/xxxx.php',sl);
  FreeAndNil(sl);
end;
Das Memo übergibt nur den Fehler: Query was empty!

Aber warum? ist es doch nicht.

Ich möchte doch nur in die Tabelle 11-04 in die Spalte ra den Wert xy eintragen... Was mache ich da falsch?

Danke im Vorraus

Bye

Nightshade 29. Okt 2004 23:52

Re: [PHP/SQP] INSERT INTO wird nicht ausgeführt
 
Als ersten würde ich den Tabellennamen in Anführungsstriche setzen :

Delphi-Quellcode:
$result = mysql_query("INSERT INTO '11-04' (ra)
           VALUES ('j')");
Und die Aufruf Procedure darf die $ Zeichen nicht haben :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sl : TStringlist;
begin
  sl := TStringList.Create;
  sl.Add('db_server='+Edit1.Text);
  sl.Add('db_name='+Edit2.Text);
  sl.Add('db_user='+Edit3.Text);
  sl.Add('db_passwort='+Edit4.Text);
  sl.Add('mode=insert');
  Memo1.Text := idHttp1.Post('http://www.xxxx.com/xxxx.php',sl);
  FreeAndNil(sl);
end;
Ausserdem muss dann bei dem PHP RGISTER_GLOBALS an sein, sonst musst du im PHP-Script schreiben :
Delphi-Quellcode:
  $db = @MYSQL_PCONNECT($_POST['db_server'],$_POST['db_user'],$_POST['db_passwort'])
    or die ("Konnte keine Verbindung zur Datenbank herstellen");
  $db_check = @MYSQL_SELECT_DB($_POST['db_name']); if($db)   echo "Verbindung zur Datenbank wurde hergestellt";

TheMiller 30. Okt 2004 00:00

Re: [PHP/SQP] INSERT INTO wird nicht ausgeführt
 
Hi,

also die $-Zeichen sind schon richtig, da sie ganz oben, außerhalb dieser Funktion, also Global-Deklariert sind. Und zwar folgendermaßen:

SQL-Code:
<?PHP
  $db_server=$_POST['$db_server'];
  $db_name=$_POST['$db_name'];
  $db_user=$_POST['$db_user'];
  $db_passwort=$_POST['$db_passwort'];
  $mode=$_POST['$mode'];
Ich habe den Tabellennamen in ' ' gesetzt, aber das Resultat ist das gleiche, wie vorhin...

/EDIT

Hier am besten der gesamte Script...

SQL-Code:
<?PHP
  $db_server=$_POST['$db_server'];
  $db_name=$_POST['$db_name'];
  $db_user=$_POST['$db_user'];
  $db_passwort=$_POST['$db_passwort'];
  $mode=$_POST['$mode'];
 

/*echo    $_POST['$db_server'].chr(13).chr(10);*/
/*echo    $_POST['$db_name'].chr(13).chr(10);*/
/*echo    $_POST['$db_user'].chr(13).chr(10); */ 
/*echo    $_POST['$db_passwort'].chr(13).chr(10);*/
/*echo    $test;*/

switch ($mode) { 
  case "insert":
    insert();
    break;


function connect()
{
global $db_server,$db_user,$db_passwort, $db_name;
  $db = @MYSQL_PCONNECT($db_server,$db_user,$db_passwort)
    or die ("Konnte keine Verbindung zur Datenbank herstellen");
  $db_check = @MYSQL_SELECT_DB($db_name); if($db)   echo "Verbindung zur Datenbank wurde hergestellt";

//////WIRD NICHT BENUTZT\\\\\\\

}


function insert()
{
global $db_server,$db_user,$db_passwort, $db_name;
  $db = @MYSQL_PCONNECT($db_server,$db_user,$db_passwort)
    or die ("Konnte keine Verbindung zur Datenbank herstellen");
  $db_check = @MYSQL_SELECT_DB($db_name); if($db)   echo "Verbindung zur Datenbank wurde hergestellt";

$result = mysql_query("INSERT INTO '11-04' (ra)
           VALUES ('j')");
$eintragen = mysql_query($result);
echo $result;
echo mysql_error();
}
?>

Nightshade 30. Okt 2004 00:38

Re: [PHP/SQP] INSERT INTO wird nicht ausgeführt
 
Also ich würde das nicht so machen :

Delphi-Quellcode:
$mode=$_POST['$mode'];
Ich weiss nicht wie PHP drauf reagiert.

Ich würd mal (Nur zum testen) in Delphi und bei den $_POST die $ weglassen :

Delphi-Quellcode:
$mode=$_POST['mode'];

TheMiller 30. Okt 2004 00:42

Re: [PHP/SQP] INSERT INTO wird nicht ausgeführt
 
Funzt auch nicht. Da regt sich dann garnichts. Es hatte ja schonmal funktioniert, aber ich depp musste natürlich noch was dran ändern und hatte keine Kopie... :wall:

An den $ liegt es nicht. Das kann ich ausschließen

Hast du vielleicht sonst noch eine Idee?

Meine Felddeklaration ist VarChar Und die Länge 5.

Nightshade 30. Okt 2004 01:14

Re: [PHP/SQP] INSERT INTO wird nicht ausgeführt
 
Damit kommt mein PHPMyAdmin nicht klar :

Code:
INSERT INTO '11-04'
SET ra = 'j'

MySQL meldet:


#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''11-04'
SET ra = 'j'' at line 1
Code:
INSERT INTO '11-04'( ra )
VALUES (

'j'
)

MySQL meldet:


#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''11-04'( ra )
VALUES (  'j' )' at line 1
Also Tabellennamen nicht in Anführungsstriche, d.h. aber auch keine arithmetischen zeichen wie - + * /

Versuch mal :

Code:
INSERT INTO a SET ra = 'j'

TheMiller 30. Okt 2004 02:14

Re: [PHP/SQP] INSERT INTO wird nicht ausgeführt
 
UM DAS DESASTER (ODER WIE MAN DAS SCHREIBT) ZU BEENDEN, HIER DER RICHTIGE CODE!!!

SQL-Code:
<?PHP
  $db_server=$_POST['$db_server'];
  $db_name=$_POST['$db_name'];
  $db_user=$_POST['$db_user'];
  $db_passwort=$_POST['$db_passwort'];
  $mode=$_POST['$mode'];
  $Datum=$_POST['$Datum'];
  $Zeit=$_POST['$Zeit'];
  $Name=$_POST['$Name'];
  $Wert=$_POST['$Wert'];

/*echo    $_POST['$db_server'].chr(13).chr(10);*/
/*echo    $_POST['$db_name'].chr(13).chr(10);*/
/*echo    $_POST['$db_user'].chr(13).chr(10); */ 
/*echo    $_POST['$db_passwort'].chr(13).chr(10);*/
/*echo    $test;*/

switch ($mode) { 
  case "insert":
    insert();
    break;
  case "drop":
    drop();
    break;


function drop()
{
global $db_server,$db_user,$db_passwort, $db_name;
  $db = @MYSQL_PCONNECT($db_server,$db_user,$db_passwort)
    or die ("Konnte keine Verbindung zur Datenbank herstellen");
  $db_check = @MYSQL_SELECT_DB($db_name); if($db)   echo "Verbindung zur Datenbank wurde hergestellt";
}


function insert()
{
global $db_server,$db_user,$db_passwort, $db_name, $Datum, $Zeit, $Mandant, $Ra;
  $db = @MYSQL_PCONNECT($db_server,$db_user,$db_passwort)
    or die ("Konnte keine Verbindung zur Datenbank herstellen");
  $db_check = @MYSQL_SELECT_DB($db_name); if($db)   echo "Verbindung zur Datenbank wurde hergestellt";

$sql = mysql_query("INSERT INTO `1104` (`Datum`,`Zeit`,`Name`,`Wert`) VALUES ('$Datum', '$Zeit', '$Name', '$Wert')");
  $var = mysql_insert_id();  echo $var;
echo mysql_error();
}
?>
Ich weiß, dass die Zeile ("INSERT INTO `1104` (`Datum`,`Zeit`,`Name`,`Wert`) sehr seltsam aussieht, aber es funzt wunderbar!

Und ich kam folgendermaßen drauf. Wer PHPMyAdmin benutzt, wird es kennen.
Immer, wenn man eine Aktion durchführt, gibt PHPMYADMIN einen PHP oder SQL-Code aus. Diesen kopiert, in den Script eingebaut, keine Zeichen verändert und siehe da - es funzt!

:bouncing4: :bounce1: :firejump: :bounce2:

Gute Nacht!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz