简体   繁体   English

我如何检查特定mysql表的特定列的任何行中是否存在值

[英]How i could check if a value exist in any row of a specific column of a specific mysql table

I need to check with a script if a value exist inside the DB. 我需要使用脚本检查数据库中是否存在值。 The value is based on a variable and the field is a LONGTEXT. 该值基于变量,并且该字段是LONGTEXT。

// ...:::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');
}

What is strange is that some value are find, but many not! 奇怪的是发现了一些价值,但是却没有! The $pay come from a $_POST and i added $pay = "PayPal transaction id: $pay"; $ pay来自$ _POST,我添加了$ pay =“ PayPal交易ID:$ pay”; to make it formatted as the shop site make. 使其按照商店网站的格式进行格式化。

Pls HelP! 请帮忙!

Edit: i made a part of code, tring to see why this not matches. 编辑:我做了一部分代码,试图看看为什么不匹配。 This is the result via 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] => 0E750230DV1575308 [14] => 85B43558SH819711N [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 [29] => 8H242117S01162917 [30] => 9WC47475K89394047 [31] => 83L6687699339330K [32] => 1BE09674W4880373N [33] => 3JC01978GH9146509 [34] => 31381161BJ159335S [35] => 17V97629HJ1941344 [36] => 4XG15144CK988864F [37] => 18625833YF123353H [3 这是通过阵列获得的结果:Array([0] => [1] => 0JW61238FU6854240 [2] => 5EA00979GC149044V [3] => 59P88560S9783170B [4] => 1L697134B06956638 [5] => 1N476458GR470922M [6] => 3N4412142S083993 [7] => 2GN69713EV7294613 [8] => 9WT48148YE725931K [9] => 585690586Y6998523 [10] => 7X9149767T051513K [11] => 5WJ25963L5455313H [12] => 1L717841BA5989748 [13] => 0E750230DV1575308 [14] ] => 78R85507FR2081540 [16] => 96F7363575285431M [17] => 87V99180GV2251342 [18] => 4G459145SE959020V [19] => 86U00726DL9205244 [20] => 70820350T9653825F [21] => 8K002091YN0079914 [22] => 167 > 93L886231K973983G [24] => 6E98077468505954G [25] => 770172708D596892K [26] => 22N679682U615734D [27] => 3WR4000656945550Y [28] => 59P88560S9783170B [29] => 8H242117S01162917 [30] => 83L9473339 [32] => 1BE09674W4880373N [33] => 3JC01978GH9146509 [34] => 31381161BJ159335S [35] => 17V97629HJ1941344 [36] => 4XG15144CK988864F [37] => 18625833YF123353H [3] 8] => 2GU86013NN2703635 ) Does not matco0JW61238FU6854240 8] => 2GU86013NN2703635)不matco0JW61238FU6854240

I tried this kind of script to see why: 我尝试了这种脚本来了解原因:

// 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;

It still does not match? 还是不匹配? WTF? WTF?

But if i use this it matches!! 但是,如果我使用它匹配! WTF? WTF? Match : 59P88560S9783170B 匹配:59P88560S9783170B

Is possible that some bytes are making it dirty? 可能有些字节使它变脏了吗?

I had this saved from a post I found on this issue a while ago. 我是从前一阵子在这个问题上发现的帖子中保存下来的。

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

Then you can switch back to numeric with MYSQL_NUM or both with MYSQL_BOTH 然后,您可以使用MYSQL_NUM切换回数字或使用MYSQL_BOTH切换回数字

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM