$query = sprintf("SELECT sterm FROM wp_mysearchterms WHERE name='%s'",
mysql_real_escape_string($partialStates));
?>
Fehlermeldung: SELECT sterm FROM wp_mysearchterms WHERE sterm REGEXP '(\<\?php|mystp_get_terms\(1\);|\?\>)' LIMIT 5
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
Was mache ich falsch?
23.06.2011, 20:23
#
2
Arthur Spooner
Halb Mensch, halb Admin
Registriert seit: 10.05.2006
Beiträge: 3.899
Hallo ddimi1,
das liegt vermutlich an den Backslashes im REGEXP in Deiner Query. Diese müssen nochmal escaped werden. Aus einem Backslash werden also zwei.
$query = sprintf("SELECT sterm FROM wp_mysearchterms WHERE name='%s'",
mysql_real_escape_string($partialStates));
?>
24.06.2011, 11:56
#
9
ddimi1
Threadstarter
Registriert seit: 16.03.2009
Beiträge: 47
Fehler:
SELECT sterm FROM wp_mysearchterms WHERE sterm REGEXP '(google)' LIMIT 5
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in archive.php on line 27
Zeile 27:
PHP-Code:
while ($state = mysql_fetch_assoc($states)) {
---------- Doppelpost zusammengeführt ----------
Warum kommt Fehler?
24.06.2011, 12:05
#
10
Arthur Spooner
Halb Mensch, halb Admin
Registriert seit: 10.05.2006
Beiträge: 3.899
Musst du an dieser Stelle mit REGEXP arbeiten oder was hast du vor?
Es wäre vielleicht sinnvoll wenn du erst mal erklärst, was du möchtest. Ich vermute die DB-Abfrage hast du dir irgendwo kopiert?
Ich will im Wordpress zum WP-Titel oder WP-Tags änliche Inhalte aus meinem Job-Portal und Forum anzeigen.
24.06.2011, 14:42
#
14
ddimi1
Threadstarter
Registriert seit: 16.03.2009
Beiträge: 47
Neue Code:
So funktioniert es
Code:
$partialStates = usa; // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!
So funktioniert es nicht
Code:
$partialStates = the_title(); // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!
Ganze Code.
Code:
<?php
$partialStates = the_title(); // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!
mysql_connect("localhost", "web123", "123456") or die(mysql_error());
mysql_select_db("usr_web112_3") or die(mysql_error());
$states = mysql_query("SELECT sterm FROM wp_mysearchterms WHERE sterm LIKE '%$partialStates%' LIMIT 5");
while ($state = mysql_fetch_array($states)) {
echo "<div>" . $state['sterm'] . "</div>";
}
?>
Wenn ich the_title() einfüge, dann werden nicht änliche Datensätze ausgegeben. Weißt du warum?
24.06.2011, 14:53
#
15
Arthur Spooner
Halb Mensch, halb Admin
Registriert seit: 10.05.2006
Beiträge: 3.899
Ich schätze mal das liegt daran, weil du zu der Zeit die Umgebung von Wordpress nicht greifbar hast. Ist das als Plugin realisiert oder wie führst du das Script aus?
Das ist nicht als Plugin realisiert. Ich habe das Script einfach in single.php (Artikel-Seite) eingefügt.
Was soll ich jetzt machen?
---------- Doppelpost zusammengeführt ----------
Hast du keine Idee?
24.06.2011, 15:21
#
17
Arthur Spooner
Halb Mensch, halb Admin
Registriert seit: 10.05.2006
Beiträge: 3.899
Versuch es mal so:
PHP-Code:
<?php mysql_connect("localhost", "web123", "123456") or die(mysql_error()); mysql_select_db("usr_web112_3") or die(mysql_error());
if (have_posts()) : while (have_posts()) : the_post(); $partialStates = mysql_real_escape_string(get_the_title()); // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!
$states = mysql_query("SELECT sterm FROM wp_mysearchterms WHERE sterm LIKE '%$partialStates%' LIMIT 5"); while ($state = mysql_fetch_array($states)) { echo "<div>" . $state['sterm'] . "</div>"; } endwhile; endif; ?>
24.06.2011, 15:44
#
18
ddimi1
Threadstarter
Registriert seit: 16.03.2009
Beiträge: 47
deine Lösung war gut. Das geht jetzt. Danke für deine Mühe.
Ich habe noch eine Frage.
Es wird nur nach reinfolge gesucht.
Gesucht nach "web immobilien" = liefert kein Ergebnise
Gesucht nach "immobilien web" = liefert Ergebnise
Leider wird es zum Suchbegriff "web immobilien" keine Ergebnise ausgegeben. Warum?
Es wäre gut wenn das gesplitert werden könnte und nach jedem Wort "web" und "immobilien" abgefragt würde. So würde viel mehr Ergebnisen ausgegeben.
24.06.2011, 15:51
#
19
Arthur Spooner
Halb Mensch, halb Admin
Registriert seit: 10.05.2006
Beiträge: 3.899
Weil ein LIKE immer nach den gesuchten Zeichen und in gleicher Reihenfolge sucht. Das heißt du wirst wohl einen Artikel mit der Kombination "immobilien web" haben aber nicht umgekehrt. "web immobilien" kommt also niemals so im Text vor.
Deshalb habe ich auch zu MATCH AGAINST geraten. Hier ist die Reihenfolge ziemlich egal, es zählt die Übereinstimmung.
Deine Query würde dann so aussehen:
SELECT sterm, MATCH(sterm) AGAINST('" . $partialStates . "') AS rank FROM wp_mysearchterms WHERE MATCH(sterm) AGAINST('" . $partialStates . "') ORDER BY rank DESC LIMIT 5
Kommt Fehler
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in single.php on line 25
Line 25
PHP-Code:
while ($state = mysql_fetch_array($states)) {
PHP-Code:
<?php
mysql_connect("localhost", "web123", "123456") or die(mysql_error());
mysql_select_db("usr_web112_3") or die(mysql_error());
if (have_posts()) : while (have_posts()) : the_post();
$partialStates = mysql_real_escape_string(get_the_title()); // Hier die variable mit dem ähnlichen Suchbegriff eintragen!!
$states = mysql_query("SELECT sterm, MATCH(sterm) AGAINST('" . $partialStates . "') AS rank FROM wp_mysearchterms WHERE MATCH(sterm) AGAINST('" . $partialStates . "') ORDER BY rank DESC LIMIT 5");
while ($state = mysql_fetch_array($states)) {
echo "<div>" . $state['sterm'] . "</div>";
}
endwhile; endif;
?>