Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO时,简单Select语句不起作用_Php_Mysql - Fatal编程技术网

Php 使用PDO时,简单Select语句不起作用

Php 使用PDO时,简单Select语句不起作用,php,mysql,Php,Mysql,我正在尝试选择一个用户id uID,只是为了检查它是否存在。。。我被最基本的select语句卡住了 我搜索并尝试了不同的人的代码,但如果我不使用fetch,我的代码总是返回true,或者它说它不是对象,我不能使用fetch $sql = 'SELECT uID FROM ldc_user_details where uID=3'; $q = $this->db->prepare($sql); $i=$q->execute(); foreach ($i->fet

我正在尝试选择一个用户id uID,只是为了检查它是否存在。。。我被最基本的select语句卡住了

我搜索并尝试了不同的人的代码,但如果我不使用fetch,我的代码总是返回true,或者它说它不是对象,我不能使用fetch

$sql = 'SELECT uID FROM ldc_user_details where uID=3';
$q = $this->db->prepare($sql);
$i=$q->execute();

     foreach ($i->fetch() as $key => $val){
      echo 'key='.$key." val =".$val;
     }

ERROR: Call to a member function fetch() on a non-object in /home/pdwdev/public_html/ldc_main.php
您需要在$q上调用fetch,而不是$i。execute返回一个指示成功或失败的布尔值

 if($i){ //indicates whether the query succeeded
     foreach ($q->fetchAll() as $key => $val){
         echo 'key='.$key." val =".$val;
     }
 }
请注意,我使用fetchAll获取所有行。fetch将只返回一个,并将指针前进到下一行。

您需要在$q而不是$i上调用fetch。execute返回一个指示成功或失败的布尔值

 if($i){ //indicates whether the query succeeded
     foreach ($q->fetchAll() as $key => $val){
         echo 'key='.$key." val =".$val;
     }
 }
<?php

$sql = 'SELECT uID FROM ldc_user_details where uID=3';

// no need to use prepare() here unless there's a user input

$q = $this->db->query($sql);

// a check for rowCount would be good
if ($q->rowCount() > 0) {

    // all results will be in $i
    $i = $q->fetchAll();

     foreach ($i as $key => $val){

         echo "Key : {$key} <br> Val : {$val}";
     }
}
else {
    die("Zero Results returned");
}
请注意,我使用fetchAll获取所有行。fetch将只返回一个,并将指针前进到下一行

<?php

$sql = 'SELECT uID FROM ldc_user_details where uID=3';

// no need to use prepare() here unless there's a user input

$q = $this->db->query($sql);

// a check for rowCount would be good
if ($q->rowCount() > 0) {

    // all results will be in $i
    $i = $q->fetchAll();

     foreach ($i as $key => $val){

         echo "Key : {$key} <br> Val : {$val}";
     }
}
else {
    die("Zero Results returned");
}
?>


?>

它必须是$q->fetch在已发布的答案和评论之上,请记住,您正在进行一个没有参数的查询,因此prepare是无用的。您可以执行$result=$this->db->query$sql->fetchAll;我可以问一下分配$I=$q->execute;的原因吗@Yousuf Memon:因为我不知道失败的地方是什么,我试着把它拆下来,只删除可能是问题原因的字符串。它必须是$q->fetch。在发布的答案和评论之上,记住你在做一个没有参数的查询,因此prepare是无用的。您可以执行$result=$this->db->query$sql->fetchAll;我可以问一下分配$I=$q->execute;的原因吗@优素福·梅蒙:因为我不知道是什么失败了,我试着把它拆下来,只是删除字符串,这可能是问题的原因。谢谢。它起作用了。但当它为真时,它返回key=0 val=Array,我知道它是通过另一个foreach循环修复的。。。但这是正确的方法吗?谢谢。它起作用了。但当它为真时,它返回key=0 val=Array,我知道它是通过另一个foreach循环修复的。。。但这是正确的方法吗?