MySQL connectie.
ik ben bezig met een scriptje voor een vriend van mij.
Het is de bedoeling dat je een formuliertje invult, deze informatie opslaat in een database (MySQL) en dat dat op een andere pagina weer wordt uitgelezen.
Allemaal niet zo woest moeilijk.
Ik ben het momenteel op een localhost aan het testen, maar ik krijg geen verbinding met mijn database.
Ik krijg deze errors:
Code (php)
1
2
3
4
5
2
3
4
5
Warning: mysql_connect() [function.mysql-connect]: [2002] Een verbindingspoging is mislukt omdat de verbonden party niet c (trying to connect via tcp://localhost:3306) in C:\Program Files (x86)\EasyPHP-5.3.3.1\www\Radio\ontvangst.php on line 70
Warning: mysql_connect() [function.mysql-connect]: Een verbindingspoging is mislukt omdat de verbonden party niet correct heeft geantwoord na een bepaalde tijd, of de gemaakte verbinding is mislukt omdat de verbonden host niet heeft geantwoord. in C:\Program Files (x86)\EasyPHP-5.3.3.1\www\Radio\ontvangst.php on line 70
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files (x86)\EasyPHP-5.3.3.1\www\Radio\ontvangst.php on line 71
Warning: mysql_connect() [function.mysql-connect]: Een verbindingspoging is mislukt omdat de verbonden party niet correct heeft geantwoord na een bepaalde tijd, of de gemaakte verbinding is mislukt omdat de verbonden host niet heeft geantwoord. in C:\Program Files (x86)\EasyPHP-5.3.3.1\www\Radio\ontvangst.php on line 70
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files (x86)\EasyPHP-5.3.3.1\www\Radio\ontvangst.php on line 71
Ik gebruik EasyPHP om een locale database op te zetten, en mijn code ziet er op het moment zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<html>
<head>
<title>Ontvangstrapport</title>
</head>
<body>
<h3>Vul uw ontvangst in</h3>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<tr>
<td align = "right" >Datum :</td>
<td><input type = "text" name = "datum"></td>
</tr>
<tr>
<td align = "right" >Tijd :</td>
<td><input type = "text" name = "tijd"></td>
</tr>
<tr>
<td align = "right" >Station :</td>
<td><input type = "text" name = "station"></td>
</tr>
<tr>
<td align = "right" >Locatie :</td>
<td><input type = "text" name = "locatie"></td>
</tr>
<tr>
<td align = "right" > Frequentie :</td>
<td><input type = "text" name = "frequentie"></td>
</tr>
<tr>
<td align = "right" > Signaal :</td>
<td><input type = "text" name = "signaal"></td>
</tr>
<tr>
<td align = "right" > Naam :</td>
<td><input type = "text" name = "naam"></td>
</tr>
</table>
<input type ="submit" value = "verstuur" name = "Verstuur">
<input type ="reset" value = "Reset" name = "Reset">
</form>
</body>
</html>
<?php
if(isset($_POST['Verstuur']))
{
$server = "localhost";
$gebruiker = "";
$wachtwoord = "";
$database = "ontvangst";
$datum = $_POST['datum'];
$tijd = $_POST['tijd'];
$station = $_POST['station'];
$locatie = $_POST['locatie'];
$frequentie = $_POST['frequentie'];
$signaal = $_POST['signaal'];
$naam = $_POST['naam'];
$conn = mysql_connect($server, $gebruiker, $wachtwoord)
or die("Couldn't connect to SQL Server on $server");
$selected = mysql_select_db($database, $con)
or die("Couldn't open database $database");
mysql_query("SET NAMES utf8");
$sql="INSERT INTO ontvangst (Datum, Tijd, Station, Locatie, Frequentie, Signaal, Naam)
VALUES ('$datum', '$tijd', '$station', '$locatie', '$frequentie', '$signaal', '$naam')";
$result = mysql_query($sql);
echo $sql;
if(!$result)
{
echo mysql_error();
}
$numRows = mysql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";
mssql_close($con);
}
?>
<head>
<title>Ontvangstrapport</title>
</head>
<body>
<h3>Vul uw ontvangst in</h3>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<tr>
<td align = "right" >Datum :</td>
<td><input type = "text" name = "datum"></td>
</tr>
<tr>
<td align = "right" >Tijd :</td>
<td><input type = "text" name = "tijd"></td>
</tr>
<tr>
<td align = "right" >Station :</td>
<td><input type = "text" name = "station"></td>
</tr>
<tr>
<td align = "right" >Locatie :</td>
<td><input type = "text" name = "locatie"></td>
</tr>
<tr>
<td align = "right" > Frequentie :</td>
<td><input type = "text" name = "frequentie"></td>
</tr>
<tr>
<td align = "right" > Signaal :</td>
<td><input type = "text" name = "signaal"></td>
</tr>
<tr>
<td align = "right" > Naam :</td>
<td><input type = "text" name = "naam"></td>
</tr>
</table>
<input type ="submit" value = "verstuur" name = "Verstuur">
<input type ="reset" value = "Reset" name = "Reset">
</form>
</body>
</html>
<?php
if(isset($_POST['Verstuur']))
{
$server = "localhost";
$gebruiker = "";
$wachtwoord = "";
$database = "ontvangst";
$datum = $_POST['datum'];
$tijd = $_POST['tijd'];
$station = $_POST['station'];
$locatie = $_POST['locatie'];
$frequentie = $_POST['frequentie'];
$signaal = $_POST['signaal'];
$naam = $_POST['naam'];
$conn = mysql_connect($server, $gebruiker, $wachtwoord)
or die("Couldn't connect to SQL Server on $server");
$selected = mysql_select_db($database, $con)
or die("Couldn't open database $database");
mysql_query("SET NAMES utf8");
$sql="INSERT INTO ontvangst (Datum, Tijd, Station, Locatie, Frequentie, Signaal, Naam)
VALUES ('$datum', '$tijd', '$station', '$locatie', '$frequentie', '$signaal', '$naam')";
$result = mysql_query($sql);
echo $sql;
if(!$result)
{
echo mysql_error();
}
$numRows = mysql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";
mssql_close($con);
}
?>
Als iemand een idee heeft, hoor ik het graag.
Alvast bedankt!
Groeten, Thierry
Gewijzigd op 13/12/2010 15:32:56 door Thierry Vredeveld
als tweede: bouw correcte fouthandeling ipv OR die
als derde: Waarom onnodig variabelen aanmaken? dit kan veel sneller zonder variabelen
als vierde : je hebt deze code:
$conn = mysql_connect($server, $gebruiker, $wachtwoord)
$selected = mysql_select_db($database, $con)
je hebt bij de eerste $conn en op regel 2 zeg je $con
volgens mij moet dit ook $conn zijn
Vergeet ook op de laatste regel waar je de connectie sluit niet de variabel aan te passen.
mssql_close($con);
$con = $conn
Quote:
Description
int mysql_num_rows ( resource $result )
Retrieves the number of rows from a result set. This command is only valid for statements like SELECT or SHOW that return an actual result set. To retrieve the number of rows affected by a INSERT, UPDATE, REPLACE or DELETE query, use mysql_affected_rows().
int mysql_num_rows ( resource $result )
Retrieves the number of rows from a result set. This command is only valid for statements like SELECT or SHOW that return an actual result set. To retrieve the number of rows affected by a INSERT, UPDATE, REPLACE or DELETE query, use mysql_affected_rows().
Dit script vraagt om problemen.
Zet eens je php bovenaan en je html onderaan.
Gewoon alles wat staat tussen <?php en ?> zet je helemaal boven <html>...
Om maar iets te noemen: als je nu 1 keer op submit drukt en dan 10 keer op F5 (refresh), krijg je 10 identieke inserts in je database (op de auto increment na).
We vergeten nog te zeggen dat het script lek is: SQL-Injection.
Echter nog steeds hetzelfde, en ja de SQL server staat aan, heb nog geen betere foutafhandeling en de variabelen zijn dr nog, ik ben nog niet heel lang bezig met php en sql. Wil het eerst werkend hebben voordat ik aan zulke dingen begin.
Nog meer ideeën?
Alvast bedankt.
Je mysql-server draait niet als ik de error mag geloven. Of hij draait niet op zijn standaard portnummer.
if(isset($_POST['Verstuur']))
Dit kan je beter niet doen. In sommige gevallen wordt de waarde van de submit knop niet meegestuurd naar de server.
Je kan beter testen op
if($_SERVER['REQUEST_METHOD'] == 'POST')
Als ik bij de database kijk, is het dit adres: http://127.0.0.1:8888/home/mysql/
Groeten
Je database draait op localhost port 3306.
Ik heb verder niks aan een poort veranderd, dus dat zou goed moeten zijn
Geen idee hoe je het hebt ingesteld, maar mysql reageert blijkbaar niet op port 3306.