2013-03-19 68 views
0

我在服务器之间传输数据,并需要更改我们的wiki数据库中的一些链接。我写了一个快速的脚本,应该能够做到这一点没有问题。但是当我运行它时,if($datacount)条件从不运行。这可能很简单,我错过了,但我看不出是什么问题。数据库字符串在postgresql比较不识别字符串长度

$dbconn = pg_connect("host= localhost port=5432 dbname=wiki user=user password=password"); 
$sql = "SELECT old_text FROM wiki_public.pagecontent LIMIT 10"; 
$go = pg_query($dbconn,$sql); 
$i=0; 
$string = 'sometext'; 
while($data = pg_fetch_assoc($go)) { 
    $info = $data['old_text']; 
    $count = strlen($string); 
    $datacount = strlen($info); 
    echo "Length: ".$datacount."<br/>"; 
    if($datacount != 0) { 
    $position = strpos($string,$info); 
    if($position !== false) { 
     echo "The string ".$string." was found in row ".$i." and exists at position ".$position."The original content was: ".substr($info, $position,$count)."<br/>"; 
    } 
    } 
    $i++; 
} 

谢谢! 编辑

当我删除了$datacount条件,这是我的输出

Length: 0 

Warning: strpos(): Empty delimiter in D:\www\import\linksupadte.php on line 12 
Length: 12 
Length: 0 

Warning: strpos(): Empty delimiter in D:\www\import\linksupadte.php on line 12 
Length: 31 
Length: 31 
Length: 0 

Warning: strpos(): Empty delimiter in D:\www\import\linksupadte.php on line 12 
Length: 444 
Length: 1614 
Length: 153 
Length: 125 
+0

'$ string'的内容是什么? (与'$ datacount'一起回显)。 – 2013-03-19 15:00:00

+0

$ string只是一些随机文本。这很奇怪,因为当我在'$ datacount'旁边回显'$ info'时,我得到了如下长度:144,'$ info' = String(144){'one441 characters of stuff'},所以'$ info'内有内容'$ count'并不总是等于0. – Ryan 2013-03-19 15:25:40

回答

1

我今天宣布一个无脑的一天对我来说。

<?php 
# Database connection snipped. 

# Let's say the database contains at least one row that's a substring 
# of $string. Something like 'John', or '/123/'. 
$string = 'John/123/456/789/012'; 
while($data = pg_fetch_assoc($go)) { 

    $position = strpos($string, $data['old_text']); 

    if ($position !== false) { 
    echo "$string contains ".$data['old_text']; 
    } 
    else { 
    echo "$string does not contain ".$data['old_text']; 
    } 
} 

?> 
+0

直接从php strpos手册中获得了该部分。 http://php.net/manual/en/function.strpos.php该条件触发,我从strpos – Ryan 2013-03-19 16:27:19

+0

@Ryan得到一个空分隔符错误:在更换我的大脑后更新了答案。我认为现在是小睡的时候了。 – 2013-03-19 19:12:55