diff -up uc_better_cart_links.module
--- uc_better_cart_links.module	2011-03-22 11:34:26.000000000 -0500
+++ uc_better_cart_links.module	2011-03-22 11:14:25.000000000 -0500
@@ -207,9 +207,10 @@ function uc_better_cart_links_create(&$f
 /**
  * Validate the form.
  */
+
 function uc_better_cart_links_create_validate($form, &$form_state) {
   // Get all NIDs of product node types that are published.
-  $result = db_query("SELECT n.nid FROM {node} n WHERE n.type = '%s' AND n.status = 1", array('%s' => implode(',', uc_product_types())));
+  $result = db_query("SELECT n.nid FROM {uc_products} AS p LEFT JOIN {node} AS n ON n.nid = p.nid WHERE p.unique_hash AND n.status = 1", array('%p' => implode(',', uc_product_types())));
   $nids = array();
   while ($node = db_fetch_object($result)) {
     $nids[] = $node->nid;
diff -up uc_better_cart_links.pages.inc
--- uc_better_cart_links.pages.inc	2011-03-22 11:34:26.000000000 -0500
+++ uc_better_cart_links.pages.inc	2011-03-22 11:10:05.000000000 -0500
@@ -41,7 +41,7 @@ function uc_better_cart_links_noderefere
   $matches = array();
 
   if (!empty($string)) {
-    $result = db_query_range(db_rewrite_sql("SELECT n.nid, n.title FROM {node} AS n WHERE (n.title LIKE '%%%s%%' OR n.nid = '%d') AND n.type IN ('%s') AND n.status = 1"), array('%%%s%%' => $string, '%d' => $string, '%s' => implode(',', uc_product_types())), 0, 10);
+    $result = db_query_range(db_rewrite_sql("SELECT n.nid, n.title, p.unique_hash FROM {uc_products} AS p LEFT JOIN {node} AS n ON n.nid = p.nid WHERE p.unique_hash <> '' AND (LOWER(n.title) LIKE '%s%%' OR LOWER(n.nid) LIKE '%s%%')"), array('%%%s%%' => $string, '%d' => $string, 'product' => implode(',', uc_product_types())), 0, 10);
 
     while ($node = db_fetch_object($result)) {
       $matches[$node->nid] = $node->title . ' [nid: ' . $node->nid . ']';
