WordPress.org

Support

Support » Plugins and Hacks » Category Icons » Missing Argument 2 for wpdb::prepare

Missing Argument 2 for wpdb::prepare

Viewing 15 replies - 1 through 15 (of 31 total)
  • Hi,

    I have installed Category Icons Light Plugin. After upgrade to wp 3.6 I got the same error message.

    (“Warning: Missing argument 2 for wpdb::prepare(), called in …\wordpress\wp-content\plugins\category-icons-lite\caticons-lite.class.php on line 306 and defined in …\wordpress\wp-includes\wp-db.php on line 992”)

    By the way, the ‘Visit plugin link’ for the Light versions on the Plugins page in wp admin seems to be broken, it links to ‘http://www.category-icons.com/’ which responds with a 403, forbidden.

    Cheers Peter

    I am having the exact same problem on a site that was updated to 3.6 today. Any possible solutions?

    Glad to see I’m not the only one! I found a “solution” in another thread, but when I substituted the bits of code nothing changed. Surely there’s a way around this? (Or another plugin that does this…?)

    In the file
    plugins/category-icons-lite/caticons-lite.class.php I patched the code as follows:

    ...
    			WHERE meta_key = %s";
    			//WHERE meta_key = '".esc_sql($this->meta_key).'\'';
    			$k = $this->meta_key;
    			$results = wp_cache_get( 'categoryiconslite_results');
    			if ( false === $results ) { // put in cache the result
    				$results = $wpdb->get_results( $wpdb->prepare($query, $k) );

    and the plugin started to work again.
    (In the Query string changed the last line containing ‘WHERE meta_key…’ and added the variable $k which is given to the $wpdb->prepare function.
    Hopefully this helps.

    Hello,
    well I did change the code as well for our WordPress page.
    But this should be done by the plugin author.
    Here are my code changes in: /wp-content/plugins/category-icons/category_icons.php

    Index: category_icons.php
    ===================================================================
    --- category_icons.php	(revision 420)
    +++ category_icons.php	(revision 427)
    @@ -290,7 +290,7 @@
     				FROM $wpdb->term_relationships
     				right join $wpdb->term_taxonomy on $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id
     				left join $wpdb->posts on $wpdb->term_relationships.object_id = $wpdb->posts.ID
    -				where post_type = 'page' and $wpdb->term_taxonomy.taxonomy = 'category' and ID=";
    +				where post_type = 'page' and $wpdb->term_taxonomy.taxonomy = 'category' and ID = '' ";
     	$nb_max_icons_page = (int) get_option('igcaticons_max_icons');
     	$cats = array();
     	if ($type != 'cat' && $type != 'page') {
    @@ -1044,7 +1044,8 @@
      */
     function ig_caticons_install() {
     	global $wpdb, $table_prefix;
    -	$wpdb->query($wpdb->prepare("CREATE TABLE IF NOT EXISTS <code>$wpdb->ig_caticons</code> (<code>cat_id</code> INT NOT NULL ,<code>priority</code> INT NOT NULL ,<code>icon</code> TEXT NOT NULL ,<code>small_icon</code> TEXT NOT NULL , PRIMARY KEY ( <code>cat_id</code> ))"));
    +//	$wpdb->query($wpdb->prepare("CREATE TABLE IF NOT EXISTS <code>$wpdb->ig_caticons</code> (<code>cat_id</code> INT NOT NULL ,<code>priority</code> INT NOT NULL ,<code>icon</code> TEXT NOT NULL ,<code>small_icon</code> TEXT NOT NULL , PRIMARY KEY ( <code>cat_id</code> ))"));
    +	$wpdb->query($wpdb->prepare("CREATE TABLE IF NOT EXISTS %s (<code>cat_id</code> INT NOT NULL ,<code>priority</code> INT NOT NULL ,<code>icon</code> TEXT NOT NULL ,<code>small_icon</code> TEXT NOT NULL , PRIMARY KEY ( <code>cat_id</code> ))", $wpdb->ig_caticons ) ) ;
     	add_option('igcaticons_path', '');
     	add_option('igcaticons_url', '');
     	add_option('igcaticons_filetypes', 'jpg gif jpeg png');
    @@ -1357,7 +1358,8 @@
     	foreach($cats as $cat)
     		$instr .= $wpdb->escape($cat).',';
     	$instr = preg_replace('/,$/','', $instr); // Remove trailing comma
    -	if ($row = $wpdb->get_row($wpdb->prepare("SELECT cat_id, priority, icon, small_icon FROM $wpdb->ig_caticons WHERE cat_id IN($instr) ORDER BY priority DESC LIMIT 1")))
    +//	if ($row = $wpdb->get_row($wpdb->prepare("SELECT cat_id, priority, icon, small_icon FROM $wpdb->ig_caticons WHERE cat_id IN($instr) ORDER BY priority DESC LIMIT 1")))
    +if ($row = $wpdb->get_row($wpdb->prepare("SELECT cat_id, priority, icon, small_icon FROM %s WHERE cat_id IN(%s) ORDER BY priority DESC LIMIT 1", $wpdb->ig_caticons, $instr )))
     		return array($row->cat_id, $row->priority, $row->icon, $row->small_icon);
     	else
     		return false;

    I changed the wrong translation tags _e( to: __( as well.

    Hi, of course.
    My comment was ment just as a workaround until the fix is availabe. Especially as criana and playingsmarta asked for help.

    Hello tadesse please can you help me, unfortunately I can’t understand where to put your patch inside category_icons.php.

    I have tried but i got syntax errors. I have tried to put in place of original “function ig_caticons_install()”.

    Hello,
    the above code is a diff patch.
    Here is the new updated code of function ig_caticons_install

    function ig_caticons_install() {
    	global $wpdb, $table_prefix;
    	$wpdb->query($wpdb->prepare( "CREATE TABLE IF NOT EXISTS $wpdb->ig_caticons (cat_id INT NOT NULL ,priority INT NOT NULL ,icon TEXT NOT NULL ,small_icon TEXT NOT NULL , PRIMARY KEY ( cat_id ))", $table ) ) ;
    	add_option('igcaticons_path', '');
    	add_option('igcaticons_url', '');
    	add_option('igcaticons_filetypes', 'jpg gif jpeg png');
    	add_option('igcaticons_max_icons','3');
    	add_option('igcaticons_before_name','true');
    	add_option('igcaticons_fit_width','-1');
    	add_option('igcaticons_fit_height','-1');
    	add_option('igcaticons_use_small','true');
    	add_option('igcaticons_templatecode_patch','0');
    	add_option('igcaticons_templatecode_sidebar','1');
    	add_option('igcaticons_rssfeeds','1');
    	add_option('igcaticons_useseo_plugin', '0');
    	add_option('igcaticons_max_width','-1');
    	add_option('igcaticons_max_height','-1');
    	add_option('igcaticons_iconcatpage','0');
    }

    Hello, thanks for your reply. Now I don’t see anymore the warning message in the header but now I see it where there were the icons :\

    @tadesse: This patch did not work for me, unfortunately.

    Same here:(

    I have tried to delete and reinstall it, change “function ig_caticons_install()” following tadesse istructions, but then I see the error where there were the icons.

    Hello,
    in Function bm_caticons_adminicons from Line 916 you must change the queries to:

    if ( $wpdb->get_var( $wpdb->prepare( "SELECT cat_id FROM $wpdb->ig_caticons WHERE cat_id = '%d' ", $cat_ID ) ) ) {
    				$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->ig_caticons SET priority = '%d', icon = '%s', small_icon='$s' WHERE cat_id = '%d' ", $priority, $icon, $small_icon, $cat_ID ) ) ;
    			} else {
    				$wpdb->query($wpdb->prepare("INSERT INTO $wpdb->ig_caticons (cat_id, priority, icon, small_icon) VALUES ('$cat_ID', '$priority', '$icon', '$small_icon')"));

    Inserting this code at that place had no effect on the error message whatsoever, I’m sorry. But thanks for trying to help us all out!

    hi my friends , can you help me?
    i have a problem with “category icon” plugin .
    when activated plugin got error that Included :

    ( ! ) Warning: Missing argument 2 for wpdb::prepare(), called in C:\wamp\www\wordpress\wp-content\plugins\category-icons\category_icons.php on line 1047 and defined in C:\wamp\www\wordpress\wp-includes\wp-db.php on line 992
    Call Stack
    # Time Memory Function Location
    1 0.0013 215136 {main}( ) ..\edit.php:0
    2 0.0020 258128 require_once( ‘C:\wamp\www\wordpress\wp-admin\admin.php’ ) ..\edit.php:10
    3 0.0024 269368 require_once( ‘C:\wamp\www\wordpress\wp-load.php’ ) ..\admin.php:30
    4 0.0027 276744 require_once( ‘C:\wamp\www\wordpress\wp-config.php’ ) ..\wp-load.php:29
    5 0.0036 334640 require_once( ‘C:\wamp\www\wordpress\wp-settings.php’ ) ..\wp-config.php:90
    6 0.3088 12311984 do_action( ) ..\wp-settings.php:308
    7 0.3223 12402600 call_user_func_array ( ) ..\plugin.php:406
    8 0.3223 12402616 ig_caticons_install( ) ..\plugin.php:406
    9 0.3223 12402992 wpdb->prepare( ) ..\category_icons.php:1047

    so , What me Do?

    Hello tadesse, thanks for the help but unfortunately I got the same error:

    http://img841.imageshack.us/img841/2937/sri9.jpg

    ps i have edited ig_caticons_install and bm_caticons_adminicons

Viewing 15 replies - 1 through 15 (of 31 total)
  • The topic ‘Missing Argument 2 for wpdb::prepare’ is closed to new replies.
Skip to toolbar