php SUBSTR()查询是否可以更改数组的输出格式,从而使javascript字段侦听器无法再读取数组?

mrwjdhj3  于 2023-01-12  发布在  PHP
关注(0)|答案(1)|浏览(86)

很难写出一个简洁的问题而不是两个短语。
在我开始在mySQL查询中使用SUBSTR()之前,我的所有代码都能正常工作。
我有文件夹编号列表(F123456、F233999等)。
我有一个很好的函数,它可以检测用户在字段中的输入,如果输入的值在数组中,字段就会改变颜色。
过了一段时间我意识到不需要“F”,所以我使用SUBSTR(value,2,6)删除查询结果中的“F”,只返回剩下的6位数。查询在PMA窗口中以及在我print_r或var_dump结果时都有效。
但是看起来数组没有被完全读取,在javascript代码中。
这是一个查询,其中'value'是#所在列的名称。它位于variable列中的'cust_folder'对面。

$getFileNumbers = $conn->query(" SELECT SUBSTR(value, 2, 6) 
                                FROM smfqg_themes 
                                WHERE variable = 'cust_folder' ");

while($rows = $getFileNumbers->fetch_object()) {
    $fileNumberArray[] = $rows; 
}

这是一个javascript:

<input type="text" size="10"   id="idk" name="file_number" onblur="checkNumber()" onkeyup="checkNumber()" >  

<script type="text/javascript">
const idk = document.getElementById('idk');

idk.addEventListener('input', checkNumber);
idk.addEventListener('focus', checkNumber);
idk.addEventListener('blur', checkNumber);

function checkNumber() {
    
     const theArray = <?php echo json_encode($fileNumberArray); ?>;
     
     if (theArray.includes(idk.value)) {
        idk.style.background = "green"   
     } else if (theArray.find(item => item.value === idk.value) !== undefined) {
        idk.style.background = "green";
     }else {
        idk.style.background = "red";
     }
}         
</script>

我是否遗漏了格式化步骤--使用SUBSTR--这是正确查看cont“theArray”所必需的?
我已经打印并转储了数组,使用别名和不使用别名,结果都生成了所有6位数的值。
我试过同时使用SUBSTR和(value,2,6)以及(value,-6,6),但是没有任何变化。

dojqjjoe

dojqjjoe1#

当查询为SELECT value ....
当您将结果集中的列名更改为SELECT SUBSTR(value, 2, 6)时,该列名名为value
结果集中的列名名为SUBSTR(value, 2, 6)
因此,为该列指定一个如下所示的别名

SELECT SUBSTR(value, 2, 6) as value

现在,该列将再次具有正确的名称,并且将具有value属性而不是SUBSTR(value, 2, 6)属性
然后寻址idk.value的javascript代码将再次工作。

相关问题