使用PDO从数据库回显单行时出错

时间:2015-05-29 20:42:06

标签: javascript php mysql ajax pdo

Hi_I我试图使用PDO SELECT语句从我的数据库中获取单行的值,然后将其从PHP文件回送到我的Javascript文件。

如果值等于1,那么我想创建一个警告"The value is 1"。 如果该值不等于1,那么我想创建一个警告"The value is not 1"

我已经阅读过有关类似问题的其他帖子,但问题似乎涉及数组,但我只想要一个值。我想我几乎有正确的Javascript和PHP / PDO代码来做这件事,但我认为PDO有问题。

我选择的行的数据类型是VARCHAR。 我通过AJAX POST向PHP文件发送用户ID(从Facebook的Graph API检索),然后使用bindParam准备将其包含在查询中。

console.log正在返回此错误消息: Warning: log() expects parameter 1 to be double, array given in ../scripts/valuecheck.php on line 29

这是我的Javascript& AJAX POST:

function checkValue() {

FB.login(function(response) {
  if (response.authResponse) {
    console.log('Welcome!  Fetching your information.... ');

     FB.api('/me', function(response) {

     if (response.error) {
       console.log('Error - ' + response.error.message);
     }
     else {
       var userid = response.id;

                            $.ajax({
         url: 'scripts/valuecheck.php',
         data: {'userid' : userid},
        type: "POST",
        success: function(response){
            console.log(response);
                 if(response==1){
                         alert( "The value is 1");
                         }
                    else{
                        alert( "The value is not 1");
                              }
                    }
       });
}
    });
  } else {
    console.log('User cancelled login or did not fully authorize.');
  }
 });
}

这是我的PHP文件:

<?php

$servername = "myservername";
$username = "myusername";
$password = "mypassword";
$dbname = "mydbname";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$stmt = $conn->prepare("SELECT `value` FROM `table1` WHERE `id` = :currentuserid"); 
$stmt->bindParam(':currentuserid', $currentuserid);
$currentuserid = $_POST['userid'];
$stmt->execute(); 

$result = $stmt->fetch(); 
echo $result;
    }

catch(PDOException $e)
{
    echo "Error: " . $e->getMessage();
}
$conn = null;
console.log($result);
?>

如何解决这个问题的任何帮助将不胜感激! 提前谢谢。

2 个答案:

答案 0 :(得分:2)

fetch返回一个数组,SELECT中每列都有一个元素,因此您需要使用:

echo $result['value'];

答案 1 :(得分:1)

你正在混合使用JS和PHP:

catch(PDOException $e)
{
    echo "Error: " . $e->getMessage();
}
$conn = null;
console.log($result);
^^^^^^^^^^^^^^^^^^^---this is javascript, not PHP.