Probleem met mysq(li)_real_escape_string
Dit werkt keurig zoals ik nu wil. Dus dacht ik 'peace of cake' live brengen, echter nu werkt het niet meer. Nu zie ik wel topics met mysql_real_escape_string werkt niet.
Van Niels werkt met real_escape_string. Ik heb het geprobeerd met:
- real_escape_string
- mysql_real_escape_string
- mysqli_real_escape_string
Dit is de code:
config:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
define('MYSQL_SERVER', 'localhost');
define('MYSQL_GEBRUIKERSNAAM', 'xxxx');
define('MYSQL_WACHTWOORD', 'xxxxxxxx');
define('MYSQL_DATABASENAAM', 'zzz');
$Mysqli = new mysqli(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD, MYSQL_DATABASENAAM);
if(mysqli_connect_errno())
{
echo 'Fout bij verbinding: '.$Mysqli->error;
}
define('MYSQL_GEBRUIKERSNAAM', 'xxxx');
define('MYSQL_WACHTWOORD', 'xxxxxxxx');
define('MYSQL_DATABASENAAM', 'zzz');
$Mysqli = new mysqli(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD, MYSQL_DATABASENAAM);
if(mysqli_connect_errno())
{
echo 'Fout bij verbinding: '.$Mysqli->error;
}
En het stukje code waar het mis gaat (via echo)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
session_start ();
error_reporting(E_ALL);
ini_set('display_errors', '1');
include_once ('../include/config.php');
$Query_select = "
SELECT *,
date_format (datum, '%d-%m-%Y') AS member_since
FROM members
WHERE email = '" .mysqli_real_escape_string ($Mysqli, $_POST['email']) . "'
AND wachtwoord = '" .mysqli_real_escape_string ($Mysqli, sha1 ($_POST['email'] . $_POST['wachtwoord']) ). "'";
if ($Result = $Mysqli->query ($Query_select)) {
echo '<br/>affected rows: '.$Mysqli->affected_rows;
etc.
error_reporting(E_ALL);
ini_set('display_errors', '1');
include_once ('../include/config.php');
$Query_select = "
SELECT *,
date_format (datum, '%d-%m-%Y') AS member_since
FROM members
WHERE email = '" .mysqli_real_escape_string ($Mysqli, $_POST['email']) . "'
AND wachtwoord = '" .mysqli_real_escape_string ($Mysqli, sha1 ($_POST['email'] . $_POST['wachtwoord']) ). "'";
if ($Result = $Mysqli->query ($Query_select)) {
echo '<br/>affected rows: '.$Mysqli->affected_rows;
etc.
Alternatief - orgineel van Niels zijn tutorial:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
session_start ();
error_reporting(E_ALL);
ini_set('display_errors', '1');
include_once ('../include/config.php');
$Query_select = "
SELECT *,
date_format (datum, '%d-%m-%Y') AS member_since
FROM members
WHERE email = '" .$Mysqli->real_escape_string ($_POST['email']) . "'
AND wachtwoord = '" .$Mysqli->real_escape_string (sha1 ($_POST['email'] . $_POST['wachtwoord']) ). "'";
if ($Result = $Mysqli->query ($Query_select)) {
echo '<br/>affected rows: '.$Mysqli->affected_rows;
etc.
error_reporting(E_ALL);
ini_set('display_errors', '1');
include_once ('../include/config.php');
$Query_select = "
SELECT *,
date_format (datum, '%d-%m-%Y') AS member_since
FROM members
WHERE email = '" .$Mysqli->real_escape_string ($_POST['email']) . "'
AND wachtwoord = '" .$Mysqli->real_escape_string (sha1 ($_POST['email'] . $_POST['wachtwoord']) ). "'";
if ($Result = $Mysqli->query ($Query_select)) {
echo '<br/>affected rows: '.$Mysqli->affected_rows;
etc.
Op mijn ontwikkel localhost(XAMPP) is in beide situatie's het resultaat van affected rows 1.
Op de live versie blijft de pagina gewoon wit. Pas als ik echo statements bovenin plaats, dan gebeurd er wat maar als ik een echo statement boven het if statement plaats, gebeurd echter niets meer.
De site wordt gehost bij hosting2go, en php5.3.
Heeft iemand een idee wat hier aan de hand is? Of kan het ook nog te maken hebben dat ik op mijn localhost MySql 5 gebruik en op de live omgeving MySql 4.x?
Gewijzigd op 14/08/2012 21:52:33 door Nkamp Kamp van de
Gewijzigd op 14/08/2012 21:31:34 door Erwin H
Als ik de verkeerde functie zou gebruiken zou het volgens mij ook niet moeten werken op mijn localhost!, toch? En op mijn localhost wordt netjes het aantal rows gereturned nl. 1
Werkt bij INSERT, UPDATE, REPLACE or DELETE
mysql_num_rows()
Werkt bij SELECT or SHOW
Ik ben er achter want opeens dacht ik wat is nu nog verschillend en idd. MySQL. Ik heb een nieuwe database aangemaakt van MySQL 5 en nu werkt het!! Ik had eerder verwacht dat het met PHP te maken had en niet zozeer met de database versie.