将非必需(空)参数绑定到PDO查询中


Bind not required (empty) parameter into a PDO query

我在一个网站上创建了一个"反馈"部分。在本节中,我包含了一个用于评论和星级评级系统的文本字段。评级输入不是必需的(人们没有被迫离开利率),并用于创建$_POST['rating']整数变量(1-5),该变量绑定到插入PDO查询:

$dbms->bindparam(':rating', $_POST['rating'], PDO::PARAM_INT);

$_POST['rating']变量设置时,这工作得很好,但当它不是我得到以下错误:

SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'rating' at row 1

是否有任何方法(即标志)告诉PDO绑定参数只有当它不是空的,并使用MySQL的默认值代替?

if(empty($_POST['rating'])) $_POST['rating'] = 0;

在你绑定之前的某个地方。这样,无论用户的操作如何,PDO都会得到一个int值。如果没有设置评级,评级将变为0。