Ich versuche, HTML Purifier http://htmlpurifier.org/ zu integrieren, um meine vom Benutzer eingegebenen Daten zu filtern, aber ich erhalte den folgenden Fehler unten. Und ich habe mich gefragt, wie kann ich dieses Problem beheben?
Ich erhalte den folgenden Fehler.
on line 22: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
Zeile 22 ist.
if (mysqli_num_rows($dbc) == 0) {
Hier ist der php-Code.
if (isset($_POST['submitted'])) { // Handle the form.
require_once '../../htmlpurifier/library/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
$config->set('HTML.Doctype', 'XHTML 1.0 Strict'); // replace with your doctype
$purifier = new HTMLPurifier($config);
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT users.*, profile.*
FROM users
INNER JOIN contact_info ON contact_info.user_id = users.user_id
WHERE users.user_id=3");
$about_me = mysqli_real_escape_string($mysqli, $purifier->purify($_POST['about_me']));
$interests = mysqli_real_escape_string($mysqli, $purifier->purify($_POST['interests']));
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO profile (user_id, about_me, interests)
VALUES ('$user_id', '$about_me', '$interests')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE profile
SET about_me = '$about_me', interests = '$interests'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
if (!$dbc) {
// There was an error...do something about it here...
print mysqli_error($mysqli);
return;
}
}
$dbc
gibt false zurück. Ihre Abfrage enthält einen Fehler:
SELECT users.*, profile.* --You do not join with profile anywhere.
FROM users
INNER JOIN contact_info
ON contact_info.user_id = users.user_id
WHERE users.user_id=3");
Die allgemeine Lösung für diesen Fehler wurde von Raveren beschrieben.
Die Abfrage hat entweder keine Zeilen zurückgegeben oder ist fehlerhaft, also wird FALSE
zurückgegeben. Ändern Sie es in
if (!$dbc || mysqli_num_rows($dbc) == 0)
mysqli_num_rows
:
Rückgabewerte
Gibt TRUE bei Erfolg oder FALSE bei Fehlschlag. Für SELECT, SHOW, DESCRIBE oder EXPLAIN gibt mysqli_query() ein Ergebnisobjekt zurück.