0

嘿,请问如何将数组保存到数据库中的多行中?我正在使用带有 php 的 mysql 数据库。

// GETTING ALL THE B NODE STUFFS AND PRINTING IT'S CONTENTS
    $result = array();
    foreach($document->getElementsByTagName('b') as $node){
    $result[preg_replace('/:\s+$/','',$node->textContent)] = trim($node->nextSibling->textContent);

    }
    var_dump($result);

这是从我的数组中提取的结果。

array
 'Choose by Subject Category or Module Code' => string '' (length=0)
 '
Back to Home page' => string '' (length=0)
 'International' => string 'visiting students should consult the' (length=36)
 'Undergraduate' => string 'students should refer to the relevant section of the UCC' (length=56)
 'Postgraduate' => string 'students should refer to the relevant section of the UCC' (length=56)
 'Credit Weighting' => string '5' (length=1)
 'Teaching Period(s)' => string 'Teaching Period 1.' (length=18)
 'No. of Students' => string 'Min 15, Max 30.' (length=15)
 'Pre-requisite(s)' => string 'None' (length=4)
 'Co-requisite(s)' => string 'None' (length=4)
 'Teaching Methods' => string '1 x 4hr(s) Lectures; Other (Distance Education Module - Up to 146hrs Self Directed Study).' (length=90)
 'Module Co-ordinator' => string 'Dr Peter Cleary, Department of Accounting, Finance and Information Systems.' (length=75)
 'Lecturer(s)' => string 'Staff, Department of Accounting, Finance and Information Systems.' (length=65)
 'Module Objective' => string 'To examine the management uses of accounting information and to enhance students ability to exert effective managerial control.' (length=127)
 'Module Content' => string 'Topics include; the accounting information needs of management, costs and pricing; estimating costs; the identification of key performance indicators; budgeting for control; capital investment appraisal and  implications for strategic planning and control.' (length=256)
 'Learning Outcomes' => string 'On successful completion of this module, students should be able to:' (length=68)
 'Assessment' => string 'Total Marks 100: Continuous Assessment 100 marks (Project/ Essay. Approximately 1500 words.).' (length=93)
 'Compulsory Elements' => string 'Continuous Assessment.' (length=22)
 'Penalties (for late submission of Course/Project Work etc.)' => string 'Where work is submitted up to and including 7 days late, 10% of the total marks available shall be deducted from the mark achieved.  Where work is submitted up to and including 14 days late, 20% of the total marks available shall be deducted from the mark achieved.  Work submitted 15 days late or more shall be assigned a mark of zero.' (length=336)
 'Pass Standard and any Special Requirements for Passing Module' => string '40%.' (length=4)
 'End of Year Written Examination Profile' => string 'No End of Year Written Examination.' (length=35)
 'Requirements for Supplemental Examination' => string 'Marks in passed element(s) of Continuous Assessment are carried forward, Failed element(s) of Continuous Assessment must be repeated (Resubmission of revised Continuous Assessment).' (length=181)

我确实尝试了一个带有 NSERT 查询的 for each 语句,但所有内容都保存在一个列中。

$array_data = implode("array_separator", $result);
    foreach($result as $snode){
    $query = sprintf("INSERT INTO save_array (ModuleCode) VALUES ('%s')",mysql_real_escape_string($snode));
    mysql_query($query) or die('Error, insert query failed');
    echo $snode.<br />';
    }
    echo '<br /><br /><br />';

任何帮助,将不胜感激。谢谢。

 //============== LATEST INSERT QUERY================//     
$array_data = implode("array_separator", $result); 
foreach($result as $snode){ 
$query = sprintf("INSERT INTO save_array 
       (ModuleCode,
        Homepage,
        International,
        Undergraduate,
        Postgraduate,
        CreditWeighting,
        TeachingPeriod,
        NoofStudents,
        Prerequisite,
        Corequisite,
        TeachingMethods,
        ModuleCoordinator,
        Lecturer,
        ModuleObjective,
        ModuleContent,
        LearningOutcomes,
        Assessment,
        CompulsoryElements,
        Penalties,
        PassStandard,
        EndofYearWrittenExamination,
        RequirementsforExamination) VALUES ('%s')",mysql_real_escape_string($snode)); 


foreach ($result as $key => $value) 
$query = $query . "$value"; 

 echo '<br /><br />'; 
mysql_query($query) or die($query."<br/><br/>".mysql_error());  
echo $snode. '<br />'; 
}
echo '<br /><br /><br />'; 
4

2 回答 2

0

您可以循环数组的所有元素并准备 SQL INSERT INTO 语句,并在执行此操作时执行它。

于 2012-06-25T19:25:36.337 回答
0

一个快速的答案是遍历一个 foreach 循环,将值连接到一个 INSERT 查询中(有关更多信息,请参阅http://dev.mysql.com/doc/refman/5.5/en/insert.html),并有foreach 循环不包括键“Undergraduate”、“International”和“Postdoc”,以及长度为 0 的任何值。

您的问题似乎在 INSERT 查询中。尝试这样的事情:

$query = sprintf("INSERT INTO save_array (CreditWeighting, TeachingPeriod, NoofStudents, etc.)) VALUES ('%s')",mysql_real_escape_string($snode));

foreach ($result as $key => $value)
    $query = $query . "$value";

并进行一些调整以使查询字符串恰到好处。

于 2012-06-25T19:23:34.510 回答