2013-08-29 23 views
0

如果数据库中存在值,我需要检查脚本。 该值基于一个变量,该字段为LONGTEXT。如何检查特定mysql表的特定列的任何行中是否存在值

// ...:::BEGIN REGISTRATION:::... 

//Add key format for hikashop 
$pay = "PayPal transaction id: $pay"; 

$link = mysql_connect($host, $user, $pass); 
mysql_select_db($dbo); 
if (!$link) 
    { 
    die('Could not connect'); 
    } 

// check if Transaction ID is available on the default website. 
$query = mysql_query ("SELECT * FROM jh23m_hikashop_history WHERE history_data = '$pay'"); 
$result = mysql_num_rows($query); 
echo $result; 

// Verifica che esiste almeno una riga contente la transazione. 
// Se si procedi con la response e salva nel db, altrimenti rispondi che la key non è stata trovata. 
if ($result == 0){ 
    die ('Your transaction has not been found. Please enter your payment transaction correctly or contact the support'); 
} 

奇怪的是,有些价值是找到,但很多不是! $ pay来自$ _POST并且我添加了$ pay =“PayPal transaction id:$ pay”;使其符合商店网站的格式。

请帮助!

编辑:我做了一部分代码,看看为什么这不匹配。 这是通过ARRAY的结果: Array([0] => [1] => 0JW61238FU6854240 [2] => 5EA00979GC149044V [3] => 59P88560S9783170B [4] => 1L697134B06956638 [5] => 1N476458GR470922M [6] = > 3N4412142S083993R [7] => 2GN69713EV7294613 [8] => 9WT48148YE725931K [9] => 585690586Y6998523 [10] => 7X9149767T051513K [11] => 5WJ25963L5455313H [12] => 1L717841BA5989748 [13] => [15] => 78R85507FR2081540 [16] => 96F7363575285431M [17] => 87V99180GV2251342 [18] => 4G459145SE959020V [19] => 86U00726DL9205244 [20] => 70820350T9653825F [21] => 8K002091YN0079914 [22] => 8SD993824R7167708 [23] ] => 93L886231K973983G [24] => 6E98077468505954G [25] => 770172708D596892K [26] => 22N679682U615734D [27] => 3WR4000656945550Y [28] => 59P88560S9783170B => 8H242117S01162917 [30] => 9WC47475K89394047 [31] => > 83L6687699339330K [32] => 1BE09674W4880373N [33] => 3JC01978GH9146509 [34] => 31381161BJ159335S => 17V97629 HJ1941344 [36] => 4XG15144CK988864F [37] => 18625833YF123353H [38] => 2GU86013NN2703635)不matco0JW61238FU6854240

我试过这种脚本来看看为什么:

// check if Transaction ID is available on the default website. 
$query = mysql_query ("SELECT * FROM jh23m_hikashop_history"); 
$result = mysql_num_rows($query); 
while(($row = mysql_fetch_array($query))) { 
    $paypal_ids[] =$row['history_data']; 
} 
//print_r ($paypal_ids); 
// ora cerca il valore %pay 
$paypal_ids_split = implode("", $paypal_ids); 
//print_r ($paypal_ids_split); 
$paypal_ids_clean = explode ("PayPal transaction id: ", $paypal_ids_split); 
print_r ($paypal_ids_clean); 

if (in_array($pay, $paypal_ids_clean)){ 
    echo "Match"; 
} else 
{ echo "Does not matco"; 
} 
echo $pay; 

它仍然不匹配? WTF?

但是,如果我用它这匹配! WTF? 含匹配项:59P88560S9783170B

有可能某些字节变脏了吗?

+1

你做到了这一点,mysql_fetch_array($结果);? – anilCSE

+0

我认为独特的可能性是$ pay有时与您的值不匹配并返回0,@anilCSE与mysql_num_rows($ query)就足够了...... –

+0

顺便提一下,DB内部的一些行是空的,可能是问题Emilio? –

回答

0

我有一段时间以前在这个问题上发现的帖子保存了这个文件。

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 

然后你就可以用MYSQL_BOTH切换到数字与MYSQL_NUM或两者

+0

似乎不工作我敢肯定,即时通讯有问题不是与代码本身,但与数据字段。由于其中一个是由脚本采取的,因为我可能手动添加它,而其他人,这是由hikashop软件添加,可能是不同的......有任何发现可以说“检查这个$的价值是否存在于这个领域?”不是直接匹配? –

+0

我'我发现我试图整合的软件使用:ob_get_clean来保存,这可能会影响字符串的匹配吗? –

相关问题