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