从php数组插入表中的值有误

madhukar93

从网站抓取的代码:

<?php
require_once("db.php");
$url = 'http://www.indianrail.gov.in/mail_express_trn_list.html';
$ch = curl_init($url);

set_time_limit(600);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
//echo $result;
error_reporting(E_ERROR | E_PARSE);
$dom    = new DOMDocument('1.0', 'UTF-8');  
$dom->loadHTML($result);
if($dom)
{
        $xpath = new DOMXPath($dom);


        $q = '///*[contains(concat(" ", normalize-space(@class), " "), " table_border ")]/tr';


        $nodes = $xpath->query($q);
        foreach($nodes as $tr){ // DOMNodesList implements traversable 
            echo "<br>";
            $tds = $tr->childNodes;
            $i = 0;
            foreach($tds as $td){
                $arr[$i]=$td->nodeValue;
                $i++;
            }
            var_dump($arr);
            //echo"<br><=====><br>";
            //echo ""
            mysqli_query($con,"INSERT INTO `irl`.`trains` (`TrainNo`, `TrainName`, `Origin`, `DepartureTime`, `Destination`, `ArrivalTime`) 
                                VALUES ('$arr[0]', '$arr[1]', '$arr[2]', '$arr[3]', '$arr[4]', '$arr[5]');") or die(mysqli_error($con));
        }

}
else
echo "invalid DOMDocument <br>";

即使arr [0]包含正确的值(我检查了var_dump($ arr)),这也会在数据库的第一个位置(TrainNo。)中插入“ 0”。这是怎么回事?在每次迭代中,arr []均填充有正确的值。database field is int with size 8

将字段更改为varchar确实可以解决此问题,但是如果datatyoe是问题,为什么正确插入第一行(火车编号2696)

例子:

arr[0]=> 09705
arr[1]=>JP DEE AC EXP 
arr[2]=>JAIPUR 
arr[3]=>07:55
arr[4]=>DELHI S ROHILLA    
arr[5]=>13:20

忽略第一行,它包含表格标题,因此可以理解它包含0:0的时间和0的列车号。但是它下面的行应该没问题,在突出显示的行中,第一位置应该是9705 ,但它包含0:编辑:为方便起见包括屏幕截图:
循环中$ arr的var_dump屏幕截图,随后是phpmyadmin中的db行:
var_dump($ arr)

数据库行的屏幕

劳伦特W.

在您的$arr[0]变量的屏幕快照中,整数值之前有一个空格09705intval($arr[0])如果它是数据库中的整数类型,请尝试

如果要保留前导0,则必须将此列的类型更改为VARCHAR,并始终插入trim($arr[0])以删除空格字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章