Warning: real_escape_string

Fermé
ciranox Messages postés 387 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 28 février 2016 - 30 juil. 2010 à 22:38
ciranox Messages postés 387 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 28 février 2016 - 31 juil. 2010 à 00:55
Bonjour,


J'ai un problème avec mon code php:

voici les erreurs :

warning:mysqli:mysqli()[mysqli.mysqli]:(2800/1045): Access denied for user 'USERNAME'@'localhost' (using password:YES) in C:\Program Files\xampp\htdocs\autocomplete/rpc.php on line 5

warning:mysqli:mysqli:real_escape_string()[mysqli.real-escape-string]:couldn't fetch musqli in C:\Program Files\xampp\htdocs\autocomplete/rpc.php on line 13

J'ai cherché sur google pour voir la fonction real_escape_string , est obsolète .

Je ne comprend pas d'où peut venir le problème .

voici le code php:

<?php

// PHP5 Implementation - uses MySQLi.
// mysqli('localhost', 'aimeric', 'roffbmw94', 'countries');
$db = new mysqli('localhost', 'USERNAME' ,'PASSWORD', 'DATABASE');

if(!$db) {
// Show error if we cannot connect.
echo 'ERROR: Could not connect to the database.';
} else {
// Is there a posted query string?
if(isset($_POST['queryString'])) {
$queryString = $db->real_escape_string($_POST['queryString']);

// Is the string length greater than 0?

if(strlen($queryString) >0) {
// Run the query: We use LIKE '$queryString%'
// The percentage sign is a wild-card, in my example of countries it works like this...
// $queryString = 'Uni';
// Returned data = 'United States, United Kindom';

// YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
// eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10

$query = $db->query("SELECT your_column FROM your_db_table WHERE your_column LIKE '$queryString%' LIMIT 10");
if($query) {
// While there are results loop through them - fetching an Object (i like PHP5 btw!).
while ($result = $query ->fetch_object()) {
// Format the results, im using <li> for the list, you can change it.
// The onClick function fills the textbox with the result.

// YOU MUST CHANGE: $result->value to $result->your_colum
echo '<li onClick="fill(\''.$result->value.'\');">'.$result->value.'</li>';
}
} else {
echo 'ERROR: There was a problem with the query.';
}
} else {
// Dont do anything.
} // There is a queryString.
} else {
echo 'There should be no direct access to this script!';
}
}
?>


Merci d'avance.

2 réponses

azukaar Messages postés 442 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 5 février 2013 24
Modifié par azukaar le 30/07/2010 à 22:44
bonjour,
ton probleme viens de ta connection, tu n'as pas le bon mot de passe / nom d'utilisateur :
warning:mysqli:mysqli()[mysqli.mysqli]:(2800/1045): Access denied for user 'USERNAME'@'localhost' (using password:YES) in C:\Program Files\xampp\htdocs\autocomplete/rpc.php on line 5


access denied ... = acces refusé

enfait les "//" dans ton code permetent de mettre des lignes en commentaires (elles ne seront pas executées)
donc
// mysqli('localhost', 'aimeric', 'roffbmw94', 'countries');

ne fais rien,
c'est ici que tu dois mettre ton mot de passe etc... :

$db = new mysqli('localhost', 'USERNAME' ,'PASSWORD', 'DATABASE');
0
ciranox Messages postés 387 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 28 février 2016
30 juil. 2010 à 23:21
Merci de ta réponse.

Effectivement il y a plus d'erreurs . En fait c'est un petit moteur de recherche autocomplete qui va chercher dans ma base des mots clefs. Le problème est que quand j'écris dans le champs texte mon d'info bulle m'affiche:

Error : error: there was à problem with the query

Normalement il devrait m'afficher les infos qui se trouve dans la bdd.
0
azukaar Messages postés 442 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 5 février 2013 24
Modifié par azukaar le 30/07/2010 à 23:23
deja tu dois remplacer Value par le nom de la colonne qui contient les resultats dans
echo '<li onClick="fill(\''.$result->value.'\');">'.$result->value.'</li>';
0
ciranox Messages postés 387 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 28 février 2016
30 juil. 2010 à 23:53
je ne comprend pas très bien ce que tu veux dire ?

je suis débutant il faut aller mololo avec moi .

Merci encore
0
azukaar Messages postés 442 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 5 février 2013 24
30 juil. 2010 à 23:57
bien dans cette ligne tu as $result->value tu remplace value par le nom de la colonne SQL qui contient les mots a auto completer, et aussi envoie moi le script qui affiche le champs il y a apparemment une erreur
0
ciranox Messages postés 387 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 28 février 2016
31 juil. 2010 à 00:32
La colonne sql s'appelle déjà value .

Voici le script qui affiche le champ texte:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax Auto Suggest</title>

<script type="text/javascript" src="jquery-1.2.1.pack.js"></script>
<script type="text/javascript">
function lookup(inputString) {
if(inputString.length == 0) {
// Hide the suggestion box.
$('#suggestions').hide();
} else {
$.post("rpc.php", {queryString: ""+inputString+""}, function(data){
if(data.length >0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
} // lookup

function fill(thisValue) {
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}
</script>

<style type="text/css">
body {
font-family: Helvetica;
font-size: 11px;
color: #000;
}

h3 {
margin: 0px;
padding: 0px;
}

.suggestionsBox {
position: relative;
left: 30px;
margin: 10px 0px 0px 0px;
width: 200px;
background-color: #212427;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border: 2px solid #000;
color: #fff;
}

.suggestionList {
margin: 0px;
padding: 0px;
}

.suggestionList li {

margin: 0px 0px 3px 0px;
padding: 3px;
cursor: pointer;
}

.suggestionList li:hover {
background-color: #659CD8;
}
</style>

</head>

<body>


<div>
<form>
<div>
Type your county:
<br />
<input type="text" size="30" value="" id="inputString" onkeyup="lookup(this.value);" onblur="fill();" />
</div>

<div class="suggestionsBox" id="suggestions" style="display: none;">
<img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
<div class="suggestionList" id="autoSuggestionsList">
 
</div>
</div>
</form>
</div>

</body>
</html>
0
azukaar Messages postés 442 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 5 février 2013 24
Modifié par azukaar le 31/07/2010 à 00:39
value ne devrais ps etre nul dans ton input puisque c'est ça qui fais tous planté cherche dans la doc du truc que t'as utiliser pour savoir quoi y mettre
rectification : tu dois changer ça :
$query = $db->query("SELECT your_column FROM your_db_table WHERE your_column LIKE '$queryString%' LIMIT 10");
(value est effectivement nul)
0