我正在尝试使用PHP检查数组列表中是否存在用户输入值。这是我的代码:
$chkvalue=$_POST['id'];
$sql=$dbh->prepare("my query hear");
$sql->execute();
$memers=$sql->fetch(PDO::FETCH_BOTH);
我在数组$memers
中得到了我的值列表。当我使用var_dump($memers);
时,我可以看到数组中的所有值。现在,我想查看数组$chkvalue
中存在的天气$memers
。
我尝试了以下代码:
if (in_array($chkvalue ,$memers)) {
echo "Value exists";
} else {
echo "Value doesn't exists";
}
但是,它始终显示Value doesn't exists
。
例如:我的数组包含{23568,456982,123489,125895,154879,124648}
现在我想检查该数组中是否存在456982。
我尝试了FETCH_NUM
我得到了以下结果
array(5) { [0]=> string(6) "600258" [1]=> string(15) "A SURYANARAYANA" [2]=> string(6) "420575" [3]=> string(1) "A" [4]=> string(10) "2016-07-05" }
array(5) { [0]=> string(6) "223511" [1]=> string(20) "A UMA MAHESWARA RAO" [2]=> string(6) "600258" [3]=> string(1) "A" [4]=> string(10) "2016-07-05" }
array(5) { [0]=> string(6) "907774" [1]=> string(19) "A UMA MAHESWARA RAO" [2]=> string(6) "223511" [3]=> string(1) "A" [4]=> string(10) "2016-07-05" }
array(5) { [0]=> string(6) "688108" [1]=> string(13) "M BALA BALAJI" [2]=> string(6) "907774" [3]=> string(1) "A" [4]=> string(10) "2016-07-05" }
答案 0 :(得分:1)
可能是你的问题与使用PDO :: FETCH_BOTH检索值的事实有关所以$ nemers包含结果我有几种不同的方式
然后尝试使用
$memers=$sql->fetch(PDO::FETCH_NUM);
但是如果你的结果是一个关联数组,你应该像我们这样的somthings
<?php
$chkvalue=$_POST['id'];
$sql=$dbh->prepare("SELECT * FROM ???"); // Put a table name where the ? is.
$sql->execute();
while($row = $sql->fetch(PDO::FETCH_ASSOC))
{
foreach ($$row as $key => $value) {
if ( $value == $chkvalue ) {
echo "Value exists";
}
}
}
?>
答案 1 :(得分:0)
我不明白为什么人们会投反对票。总有一个选择可以讨论。我怎么得到我的答案in_array
不适用于多维数组,所以下面的代码工作
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
和数组
if(in_array_r($chkvalue, $memers)){
echo 'found';
}else{
echo 'Not Found';
}
答案 2 :(得分:-2)
我强烈建议您使用$stmt->fetch(PDO::FETCH_ASSOC)
代替$stmt->fetch(PDO::FETCH_BOTH)
。您可以在php或实际命令中执行您正在寻找的内容。
PHP:
<?php
$chkvalue=$_POST['id'];
$sql=$dbh->prepare("SELECT * FROM ???"); // Put a table name where the ? is.
$sql->execute();
while($row = $sql->fetch(PDO::FETCH_ASSOC))
{
$lookup_value = '20485930';
if($lookup_value === $row['column_name'])
{
// Here is a match
}
}
?>
带PDO的SQL
<?php
$chkvalue=$_POST['id'];
$sql=$dbh->prepare("SELECT * FROM ??? WHERE ??? = :value"); // Put a table name
$sql->bindValue(':value', $value_name, PDO::PARAM_STR);
// $value_name is a placeholder for the actual value to put here.
$sql->execute();
if($sql->num_rows > 1)
{
// You have multiple inserts for this value
}
else
{
// You have only one value.
}
?>
希望这有帮助。