From: ssilk
Date: Mon Jan 29 00:10:34 2001
Modified files:
      php-lib/php/query_sql.inc

Log message:
Bugfixes of query_sql. Works now very fine - think we can say it's now
stable.


Index: php-lib/php/query_sql.inc
diff -u php-lib/php/query_sql.inc:1.21 php-lib/php/query_sql.inc:1.22
--- php-lib/php/query_sql.inc:1.21      Thu Sep 21 23:26:59 2000
+++ php-lib/php/query_sql.inc   Mon Jan 29 00:10:02 2001
@@ -18,7 +18,7 @@
  *     is based in November 1997,
  *     it was a collection of functions for PHP/FI and mSQL.
  *
- * $Id: query_sql.inc,v 1.21 2000/09/21 21:26:59 ssilk Exp $
+ * $Id: query_sql.inc,v 1.22 2001/01/28 23:10:02 ssilk Exp $
  *
  */
 
@@ -203,7 +203,6 @@
                }
        }
 
-       ##
        ## table_quote - converts a value of given table into a
        ## corresponding correctly escaped value. Indeed it is only
        ## some better type of interface for convert()
@@ -470,8 +469,10 @@
                }
                list($vals,$names)=$this->uniform_vars($meta,$fields,$special);
 
+               $unique_key=array_flip(explode(' ',$meta['unique']));
                for ($i=0 ; $i < Count ($names); $i++ ) {
-                       $s[]=$names[$i].'='.$vals[$i];
+                       if (!isset($unique_key[$names[$i]]))
+                               $s[]=$names[$i].'='.$vals[$i];
                }
                if (Count($s)) {
                        $q=sprintf("UPDATE %s SET %s%s",$table,join($s,", "),
@@ -672,12 +673,14 @@
                }
                $uniq=split(" ",$meta['unique']);
                $wfields=ARRAY();
+               # loops through found uniques and remember them in $wfields
                for ( reset($uniq) ; list(,$name)=each($uniq) ; ) {
-                       if (isset($meta['meta'][$name])) {
-                               $tmp= $this->convert($fields[$name],
+                       if (!isset($fields[$name])) continue;
+                       if (isset($meta['meta'][$name]) ) {
+                               $tmp= $this->convert(@$fields[$name],
                                                     $meta[$meta['meta'][$name]],
                                                     @$special[$name]);
-                               if ( (string)$tmp[0] !='NULL' &&
+                               if ( (string)$tmp[0] !='NULL' and
                                     empty($special['removenull']) ) {
                                        $wfields[$name]=$fields[$name];
                                }
@@ -691,7 +694,9 @@
                if (!$whereclause) {
                        echo "ERROR: unique_where_Clause(): The result of generating a 
where-clause to this uniqe identifers is empty:<br>";
                        for ( reset($uniq); list(,$name)=each($uniq) ; ) {
-                               echo "[$name]=>'$fields[$name]'<br>";
+                               if (!isset($fields[$name]) )
+                                       echo "\$fields[$name] is empty";
+                               else    echo "\$fields[$name]=>'$fields[$name]'<br>";
                        }
                        echo "<br>";
                        return(false);
@@ -885,7 +890,7 @@
        ##
        ## $table     The name of the table
        ##
-       function capture_vars ($table) {
+       function capture_vars ($table,$special='') {
                list($table,$prefix)=$this->istableprefix($table,$special);
                $meta=$this->metadata_buffered($table,$prefix);
                $r=Array();



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to