mysql_real_escape_string// Faire une chaîne vide?

J'utilise la requête jQuery AJAX sur la page nommée
like.php

, qui se connecte à ma base de données et insère la chaîne. Ce code
like.php

:


php

// Some config stuff
define/DB_HOST, 'localhost'/;
define/DB_USER, 'root'/;
define/DB_PASS, ''/;
define/DB_NAME, 'quicklike'/;

$link = mysql_connect/DB_HOST, DB_USER, DB_PASS/ or die/'ERROR: ' . mysql_error///;
$sel = mysql_select_db/DB_NAME, $link/ or die/'ERROR: ' . mysql_error///;

$likeMsg = mysql_real_escape_string/trim/$_POST['likeMsg']//;
$timeStamp = time//;

if/empty/$likeMsg//
die/'ERROR: Message is empty'/;

$sql = "INSERT INTO `likes` /like_message, timestamp/
VALUES /'$likeMsg', $timeStamp/";

$result = mysql_query/$sql, $link/ or die/'ERROR: ' . mysql_error///;

echo mysql_insert_id//;

mysql_close/$link/;

?


Chaîne
$likeMsg = mysql_real_escape_string/trim/$_POST['likeMsg']//;

. Il semble qu'il retourne simplement une chaîne vide et dans ma base de données sous la colonne
like_message

Je ne vois que des enregistrements vides. Cependant, si je supprime
mysql_real_escape_string//

, Cela fonctionnera bien.

Voici mon code jQuery, Si cela aide.


$/'#like'/.bind/'keydown', function/e/ {
if/e.keyCode == 13/ {
var likeMessage = $/'#changer p'/.html//;

if/likeMessage/ {
$.ajax/{
cache: false,
url: 'like.php',
type: 'POST',
data: { likeMsg: likeMessage },
success: function/data/ {
$/'#like'/.unbind//;
writeLikeButton/data/;
}
}/;
} else {
$/'#button_container'/.html/''/;
}
}
}/;


Tout ce code jQuery Ça marche bien, je l'ai moi-même vérifié.

Toute aide est très appréciée, merci.
Invité:

Hannah

Confirmation de:

Tu 1000% bien sûr que
$_POST["likeMsg"]

Est-ce que quelque chose contient vraiment?

Concernant
mysql_real_escape_string//

, retourner une valeur vide puis dans
http://www.php.net/mysql_real_escape_string
On dit qu'il n'y a qu'une seule situation quand cela peut arriver:

Remarque: avant utilisation mysql_real_escape_string// Connexion requise MySQL, Sinon, une erreur de niveau est générée E_WARNING Et retourne FALSE. Si un link_identifier Non défini, la dernière connexion est utilisée. MySQL.

Cependant, cela ne semble pas être comme ça, puisque vous avez une connexion ouverte. Étrange.

Hannah12

Confirmation de:

Étant donné que d'autres réponses ne donnent pas une idée claire qu'il est nécessaire de faire, voici ma réponse.:

Quand tu le fais


$db_connection = new mysqli/$SERVER, $USERNAME, $PASSWORD, $DATABASE/;


Vous devez vous échapper comme ça:


$newEscapedString = $db_connection->real_escape_string/$unescapedString/;


NOTE: Comme les gens votent contre cela /WTF!?/, Voici la page d'autorité officielle php, sur lequel il est écrit EXACTLY, Ce que j'ai publié:
http://php.net/manual/de/mysql ... g.php
.

David

Confirmation de:

Pour les personnes qui peuvent le retrouver à nouveau maintenant, je viens de rencontrer ce problème quand je migrate avec PHP5 sur PHP7. Je change S.


string mysql_real_escape_string/string $unescaped, [resource $link = NULL]/


à:


string mysqli_real_escape_string/mysqli $link, string $escapestr/


Ainsi, en d'autres termes, la base de données $link N'est plus optionnel et se déplace vers la première position de l'argument. S'il est omis, il renvoie une chaîne vide, apparemment, sans erreur.

Gregoire

Confirmation de:

Faire, construire var_dump $_POST['likeMsg'] et var_dump $likeMsg., Ce qui vous donnera des informations sur ce qui ne va pas.

Dominique

Confirmation de:

mysql_real_escape_string// retournera une réponse vide si vous n'avez pas installé une connexion de base de données ...

Pour répondre aux questions, connectez-vous ou registre