Php 显示查询结果时发生PDO错误:无法将类PDO语句的对象转换为字符串

Php 显示查询结果时发生PDO错误:无法将类PDO语句的对象转换为字符串,php,ajax,Php,Ajax,所以我第一次尝试AJAX,我很兴奋!我有一个名为ajaxtest1.html的文件,它只有一个简单的文本框,在其中输入里程数,然后传递到另一个文件,在该文件中接收里程数,将里程数链接到查询中并返回结果。这是ajaxtest1 <html> <body> <script language="javascript" type="text/javascript">// <![CDATA[ function ajaxFunction(){ var ajaxReq

所以我第一次尝试AJAX,我很兴奋!我有一个名为ajaxtest1.html的文件,它只有一个简单的文本框,在其中输入里程数,然后传递到另一个文件,在该文件中接收里程数,将里程数链接到查询中并返回结果。这是ajaxtest1

<html>
<body>
<script language="javascript" type="text/javascript">// <![CDATA[
function ajaxFunction(){
var ajaxRequest;  

try{
    // Opera 8.0+, Firefox, Safari
    ajaxRequest = new XMLHttpRequest();
} catch (e){
    // Internet Explorer Browsers
    try{
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try{
            ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e){
            // Something went wrong
            alert("Your browser broke!");
            return false;
        }
    }
}
// receive data sent from the server
ajaxRequest.onreadystatechange = function(){
    if(ajaxRequest.readyState == 4){
        document.myForm.time.value = ajaxRequest.responseText;
    }
}
var miles = document.getElementById('miles').value;
var queryString = "?miles=" + miles;
ajaxRequest.open("GET", "results.php" + queryString, true);
ajaxRequest.send(null); 
}
// ]]></script>
<form name="myForm">Miles: <input id="miles" type="text" /> <br /> <br /> <input onclick="ajaxFunction()" value="Query MySQL" type="button" /></form>
</body>
</html>
这是在一行上发生的,内容如下:

echo "Query: " . $stmt . "<br />";
echo“查询:”$stmt。“
”;
它正在连接数据库。有人能告诉我出了什么问题吗?当它试图形成PDO语句时,我对它进行了一些调整,这样它就可以处理我的查询了,最后一点让它窒息了

我已经更新了PHP代码,向您展示了我的尝试


谢谢你看

在results.php文件中尝试以下操作:

$stmt = $dbh->prepare('SELECT * FROM rates WHERE mileage <= :miles ORDER BY mileage DESC LIMIT 1');
$stmt->bindParam(':miles', $miles, PDO::PARAM_INT);
“可捕获的致命错误:类PDOStatement的对象无法转换为字符串。”它的意思正是它所说的。$stmt变量是一个PDO对象,您试图将其作为字符串进行回显。你不能回显一个对象,就像你不能回显一个数组一样

更换这条线

$stmt = $dbh->prepare('SELECT * FROM rates WHERE mileage <= ? ORDER BY mileage DESC LIMIT 1');
echo "Query: " . $stmt . "<br />";

$stmt=$dbh->prepare('SELECT*FROM rates WHERE milines这一点毫无疑问。你只是想说你对AJAX有多兴奋吗?我想我已经指出了问题所在,但你是对的。我应该提出一个问题,所以我现在就这么做了。谢谢。希望现在清楚了。我们还需要更多信息。你收到了什么错误消息?什么不好king?你看到下面的内容了吗?没有错误。只是一个表单,没有响应。我不知道AJAX是否发送了它,并尝试了Vik的建议,看看我是否可以得到响应代码。我在GoDaddy上,我开始怀疑AJAX是否受支持。我无法想象为什么它不受支持。我的查询字符串在AJAX代码中是否正确?我刚刚更新了我的question.连接到数据库很好,但在读取echo“Query:”.stmt.“
“;”的行上出现错误。错误为“可捕获致命错误:类PDOStatement的对象无法转换为字符串”。可能是什么问题?谢谢!如果(ajaxRequest.readyState==4&&ajaxRequest.status==200){alert,是否可以执行此操作:
(ajaxRequest.responseText).
并检查是否收到任何响应…在不同点使用console.log或alert语句来调试消息。如果在alert中没有收到任何内容,请尝试在将php文件的输出回显到Ajax之前检查它。如果{},还可以在
中添加
else{alert()}
要查看是否收到任何响应,您的意思是将其放在我的html文件中吗?是的,在包含以下内容的块中:
ajaxRequest.onreadystatechange
这样做了。什么都没有发生。下面是该块现在的样子:ajaxRequest.onreadystatechange=function(){if(ajaxRequest.readyState==4&&ajaxRequest.status==200){alert(ajaxRequest.responseText)}if(ajaxRequest.readyState==4){document.myForm.time.value=ajaxRequest.responseText;}}var miles=document.getElementById('miles').value;var queryString=“?miles=“+miles;ajaxRequest.open(“GET”,“results.php”+queryString,true);ajaxRequest.send(null);}您好,这确实有帮助,只是它不喜欢?所以我在query_text语句中将它更改为$miles。更改后,没有错误,但它没有显示行。
$miles = (int) $_GET['miles'];
$stmt = $dbh->prepare('SELECT * FROM rates WHERE mileage <= ? ORDER BY mileage DESC LIMIT 1');
$query_text = 'SELECT * FROM rates WHERE mileage <= ? ORDER BY mileage DESC LIMIT 1';
$stmt = $dbh->prepare($query_text);
echo "Query: " . $stmt . "<br />";
echo "Query: " . $query_text . "<br />";