2010-10-11 2 views
1

Я использую сценарий PHP ниже для эксперимента, который я веду, однако, кажется, ошибка с сообщением об ошибке: «Неизвестный столбец« time_submit109 »в« списке полей » «когда он переходит к задаче разрядного разряда (около стр. 110). Как разрешить эту ошибку (я не очень разбираюсь в PHP, поэтому мне сложно отлаживать это). Я думаю, что ошибка связана с переменной time_submit1.Неизвестный столбец 'time_submit109' в 'списке полей'

<?php 
//counter for dynamic timestamp and next_page 
$counter_page = ++$counter+1; 

//connect to db server 
mysql_connect($host,$user,$password) or die('Unable to connect to database server<br>'.mysql_error()); 

    //if this is the first page of a survey 
    if (!isset ($identification)) 
    //create db, if not already there 
    { 
    mysql_query("CREATE DATABASE IF NOT EXISTS $database"); 
    } 

//select db 
mysql_select_db($database) or die('Unable to select database<br>'.mysql_error()); 

    if (!isset ($identification)) 
    { 
    //create table, if not already there 
    mysql_query ("CREATE TABLE $table (identification int(9) NOT NULL auto_increment, 
    page1 TEXT, participation_date DATE, time_submit1 VARCHAR(8), ip_number VARCHAR(15), 
    browser TINYTEXT, PRIMARY KEY (identification)) TYPE=MyISAM"); 
    } 

     //change array, so that time_submit and page are renamed dynamically 
     foreach($variablen as $name=>$value) 
     { 
      if ($name == "next_page") 
      { 
      $name = "page".$counter_page; 
      } 
      elseif ($name == "counter") 
      { 
      $name = "time_submit".$counter; 
      $value = date("G:i:s"); 
      } 
     $newarray2[$name]=$value; 
     } 

    $variablen = $newarray2; 

     //for each line in the array of submitted variables do the following (traverse array) 
     foreach($variablen as $name=>$value) 
     {  
     //modify table step by step (add colums according to html input) 
     mysql_query ("ALTER TABLE $table ADD $name VARCHAR(255)"); 
     } 

     if (!isset ($identification))   
     { 
     //insert new record into db table (into the referer field) and thus generate identifcation (new record) 
     mysql_query("INSERT INTO $table (page1, participation_date, time_submit1, ip_number, browser) 
     VALUES ('$referer', '".date("Y-m-d")."', '".date("G:i:s")."', 
     '".$_SERVER['REMOTE_ADDR']."', '".$_SERVER['HTTP_USER_AGENT']."')")or die('Unable to insert into table!<br>'.mysql_error()); 
     //grab last value of auto-increment variable "identification" to be used as identifier 
     $identification = mysql_insert_id(); 
     } 

     //for each line in the array of submitted variables do the following 
     foreach($variablen as $name=>$value)  
     { 
     //update db table step by step 
     mysql_query("UPDATE $table SET $name='".mysql_real_escape_string($value)."' WHERE identification=$identification") or die('Unable to update table1<br>'.mysql_error()); 
     } 

    //close connection 
    mysql_close(); 

    //if this is the last html page: feedback for the participant 
    if (!isset ($next_page)) 
    { 
    echo $thank_you_text; 
    } 

    //if questionnaire consists of still another html page 
    else 
    { 
    //call up next HTML page and pass on ID and counter 
    echo "<html><head></head><body onLoad=\"javascript:location.replace('".$next_page."?op56=".$identification."&nr93=".$counter."')\"> 
    <a href=\"".$next_page."?op56=".$identification."&nr93=".$counter."\">Next Page</a></body></html>"; 
    //manual forwarding 
    //echo "<html><head></head><body><a href=\"".$next_page."?op56=".$identification."&nr93=".$counter."\">Next Page</a></body></html>"; 
    } 
?> 
+1

Это действительно нужно 'tl; dr' – RedFilter

+0

Как это? Я попытался уменьшить его до места, где, по моему мнению, проблема. Это должно иметь отношение к переменной time_submit1 и способу ее изменения? – Victor

+0

Как выглядит ваш стол после завершения скрипта? Каков запрос, который терпит неудачу? – Ishtar

ответ

0

Не совсем решение, но проблема заключается в том, что вы ссылаетесь на имя поля, которое не является частью таблицы. Проверьте массивы и убедитесь, что имена полей существуют в таблицах

+0

Я думаю, что это фактически ведет меня по пути. Я был обеспокоен созданием другого столбца, так как я должен был бы сделать это для каждого последующего столбца, но он заставил меня обнаружить, что причиной этого может быть это (http://dev.mysql.com/doc/refman/5.0/en/column -count-limit.html). Учитывая, что большое количество моих столбцов является varchar (255), вы думаете, что это может быть причиной? Если это так, я должен уменьшить счет varchar? – Victor

+0

Исправлена ​​проблема! Я изменил ALTER TABLE $ table ADD $ name VARCHAR (255) на ALTER TABLE $ table ADD $ name TEXT – Victor

Смежные вопросы