Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 SQLSTATE[HY093]:参数编号无效:未定义参数-在SQL中使用大于运算符_Php_Mysql_Database_Pdo - Fatal编程技术网

Php SQLSTATE[HY093]:参数编号无效:未定义参数-在SQL中使用大于运算符

Php SQLSTATE[HY093]:参数编号无效:未定义参数-在SQL中使用大于运算符,php,mysql,database,pdo,Php,Mysql,Database,Pdo,这是一个奇怪的。请看下面的php: $time = 1234; $query = $pdo->prepare('SELECT order_id, expiry FROM installs WHERE upd_code = ? AND expiry > ?'); $query->bindParam(1, $_POST['id'], PDO::PARAM_STR); $query->bindParam(2, $time, PDO::PARAM_INT); $query->

这是一个奇怪的。请看下面的php:

$time = 1234;
$query = $pdo->prepare('SELECT order_id, expiry FROM installs WHERE upd_code = ? AND expiry > ?');
$query->bindParam(1, $_POST['id'], PDO::PARAM_STR);
$query->bindParam(2, $time, PDO::PARAM_INT);
$query->execute();
产生错误:

SQLSTATE[HY093]:参数编号无效:未定义参数


仅当出于某种原因使用大于运算符时才会发生这种情况或=不产生错误。谁能告诉我怎么了?非常感谢。

去掉代码中的所有try-catch块,它的唯一目的是回显
$e->getMessage()


如果你已经用正确的方法做了这件事,那就毫无疑问了。因为PHP可以比普通PHP用户更好地处理异常,例如,在错误发生的地方添加准确的文件名和行号,因此,它会让您立即意识到真正的原因,使所有错误的假设和猜测都毫无用处。

您在收到此错误消息时是否运行完全相同的代码?你百分之百肯定吗?如果您运行这样的查询:
“SELECT?,1>?”
您确定这是引发错误的正确查询吗?你有带错误信息的电话号码吗?数字匹配吗?是的,这是准确的代码,是的,这是它失败的查询。基本上,只要我使用一个大于运算符,它就会以同样的方式失败。如果我使用“=”或“”,它可以正常工作,没有任何错误。我无法理解-我还尝试了两种不同的服务器安装。如果我运行SELECT?,1>?我得到了同样的错误btwIs它明确PDO安装或一些自制的类扩展它?所以你说这是坏的做法使用尝试/捕获?我可以理解你关于php的观点比$e->getMessage()更具体,但是优雅地处理错误肯定是更好的方法?也许在代码完成后应该使用try/catch?您称之为“优雅地”是什么?例如,不要向最终用户显示php错误,而是对try块中捕获的错误执行其他操作。不知道我怎么才能优雅地做到这一点?这里有没有更好的方法?一行
ini\u集('display\u errors',0)
将从公共视图中删除所有错误消息(不仅是您捕获的错误消息,还有所有错误消息,请注意!)。没有编写数百个try-catch块。当您需要再次调试代码时,无需将其收回。如果您希望自行处理错误,则try catch没有问题。但是,如果您只想处理错误消息(就像您目前在代码中所做的那样),请创建一个自定义异常处理程序,并在那里编写所有处理代码。或者,最好让PHP来处理。