Autor Beitrag
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 15.09.16 20:10 
Hallo Forum,
ich habe bis jetzt einen PHP Script, der so aussieht:
ausblenden PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<?php

$Server = "localhost";
$Username = "web26282455";
$Password = "Passwortderdatenbank";
$Database = "usr_web26282455_1";

$con = mysqli_connect($Server$Username,$Password,$Database);
if($con)
{
$sqlquery = "SELECT * FROM DB_Accessdata";
$result = mysqli_query($sqlquery);
while($row = myssqli_fetch_ssoc($result))
{
echo $row['row name'];
}
}
?>


Wenn ich diesen Script mit C# über WebRequest anspreche, dann kommt diese Meldung:
1

Letzendlich möchte ich erstmal alle Daten aus der Datenbank rauspulen. Wo liegt in diesem Script der Fehler?
Einloggen, um Attachments anzusehen!
_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Do 15.09.16 20:21 
user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Wo liegt in diesem Script der Fehler?


Genau dort, wo die Fehlermeldung besagt, dass ein Fehler vorliegt. Die PHP-Funktion mysqli_query() braucht (im prozeduralen Stil) zwei Parameter, wie hier zu entnehmen. Der erste Parameter muss deine Datenbankverbindung sein.

Die zweite Fehlermeldung (ebenfalls deinem Screenshot zu entnehmen) weist dich darauf hin, dass es die Funktion mysql_fetch_ssoc() nicht gibt. Das ist korrekt, sie lautet korrekt: mysqli_fetch_assoc() - konsequent, schließlich möchtest du ja scheinbar auf ein assoziatives Array (In C# wäre das am ehesten ein Dictionary<stringobject>) zugreifen.

BTW:

  • PHP-Skripte sollte man grundsätzlich nicht mit ?> abschließen.
  • Wenn du mit deiner C#-App kommunizieren willst, solltest du eher JSON als Ausgabeformat wählen, nicht Plain-Text.


Gruß
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 15.09.16 20:34 
ausblenden PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<?php
$Server = "localhost";
$Username = "web26282455";
$Password = "Passwortderdatenbank";
$Database = "usr_web26282455_1";

$con = mysqli_connect($Server$Username,$Password,$Database);
if($con)
{
$sqlquery = "SELECT * FROM DB_Accessdata";
mixed mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
while($row = mysqli_fetch_assoc($result))
{
echo $row['row name'];
}
}


Da kommt jetzt ein Fehler. Ich weiß aber nicht, wie ich die Variable mysqli$link befülle.

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Do 15.09.16 21:36 
Im ersten Link von Finn= zu mysqli_query ist ein komplettes Beispiel zum erstellen einer Verbindung, absenden eines SQL-Statements und freigeben der Daten sowie der Verbindung im objektorientierten und prozeduralem Stil.
Deine Frage wird dort beantwortet.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 18.09.16 16:56 
Also ich habe es jetzt geschafft, dass in der DB ein Item als PrimaryKey definiert ist, und sich selbstständig erhöht. Desweiteren wurden nun die ersten Daten in die DB geschrieben. Aber wie kann ich nun der PHP Datei die Daten von der C# Anwendung mitgeben?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: So 18.09.16 17:03 
stackoverflow.com/qu...ta-and-read-response

Den Link hab ich dir aber auch im anderen Thread schon geschrieben

In der PHP-Datei musst Du dann die POST-Variable abgreifen.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 18.09.16 19:39 
Ah okay. Es gibt aber ein Problem. Die Daten der C# Anwendung werden nicht in die DB geschrieben.
ausblenden PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
<?php
$servername = "localhost";
$username = "web26282455";
$password = "Passwort";
$dbname = "usr_web26282455_1";

// Create connection
$conn = new mysqli($servername$username$password$dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO NewAccessdata(Name, Vorname, Geburtsdatum)
VALUES ('
$_POST['Name']', '$_POST['Vorname']', '$_POST['Geburtsdatum']')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
else {
    echo "Error HERE: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 private void button1_Click(object sender, EventArgs e)
        {
            using (WebClient client = new WebClient())
            {

                byte[] response =
                client.UploadValues("http://www.server.de/InsertData.php"new NameValueCollection()
                {
                    { "Vorname"this.textBox1.Text },
                    { "Nachname"this.textBox2.Text },
                    { "Geburtsdatum"this.maskedTextBox1.Text }
                });

                string result = System.Text.Encoding.UTF8.GetString(response);
            }
        }


In der C# Amwemdung kommt zwar kein Fehler, aber es werden keine Daten in die DB geschrieben. Wo ist nun noch der Fehler?

Moderiert von user profile iconNarses: Realen Hostnamen anonymisiert. :?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 19.09.16 02:10 
Lass dir doch mal per var_dump den Inhalt der POST-Variable ausgeben.
Dann siehst Du was dein C#-Programm dir wie schickt und eventuell klärt sich das Problem da dann schon auf.

Und Du solltest auch nicht direkt die Strings in die Datenbank schreiben, das wäre nämlich ein Parade-Beispiel für SQL-Injection.
Es wäre so einfach, dein Programm zu decompilen oder mit entsprechenden Tools nachzuvollziehen wo es die Daten hin schickt und dann einfach einen Wert zur selben Adresse zu schicken, der dir deine kompplette Datenbank löscht :P
Besser sind da Insert-Statements mit entsprechenden Parametern: PHP Prepared Statements


Wenn bei dem Insert Statement ein Fehler auf tritt, müsstest Du das auch sehen können, Du schreibst es ja per echo.
Aber ich weiß gerade nicht, wie man das abgreift, das müsstest Du aber wissen, schließlich hast Du das auch mit der Fehlermeldung im Eingangs-Post gemacht ;)