PHP pg_prepare() table 名称作为参数
PHP pg_prepare() table name as parameter
我正在尝试将此查询从普通 pg_query()
转换为 pg_prepare() & pg_execute()
。它是一个通用查询,当我需要更新不同页面的不同表以保持代码整洁时,我会重复使用它。
我刚刚意识到参数只能用在 where
子句中,不能用在查询的其他部分。
$res = pg_query($con, "update " . $_REQUEST['table'] . " set " . $_REQUEST['colname'] . "=" . $colval . " where " . $_REQUEST['colnameid'] . "=" . $_REQUEST['colvalid'] . " returning " . $_REQUEST['colnameid'] );
试过这个代码:
$res = pg_prepare($con, "upd", "update set = where = returning ");
$res = pg_execute($con, "upd", array($_REQUEST['table'],$_REQUEST['colname'],$colval,$_REQUEST['colnameid'],$_REQUEST['colvalid'],$_REQUEST['colnameid'] ));
这是失败的。有什么方法可以实现这个或更好的方法来解决这个问题吗?
不,您不能绑定标识符,只能绑定值。
标识符(table 名称、字段名称等)首先不应该是用户输入。以这种方式处理它们是一个非常糟糕的主意。
我正在尝试将此查询从普通 pg_query()
转换为 pg_prepare() & pg_execute()
。它是一个通用查询,当我需要更新不同页面的不同表以保持代码整洁时,我会重复使用它。
我刚刚意识到参数只能用在 where
子句中,不能用在查询的其他部分。
$res = pg_query($con, "update " . $_REQUEST['table'] . " set " . $_REQUEST['colname'] . "=" . $colval . " where " . $_REQUEST['colnameid'] . "=" . $_REQUEST['colvalid'] . " returning " . $_REQUEST['colnameid'] );
试过这个代码:
$res = pg_prepare($con, "upd", "update set = where = returning ");
$res = pg_execute($con, "upd", array($_REQUEST['table'],$_REQUEST['colname'],$colval,$_REQUEST['colnameid'],$_REQUEST['colvalid'],$_REQUEST['colnameid'] ));
这是失败的。有什么方法可以实现这个或更好的方法来解决这个问题吗?
不,您不能绑定标识符,只能绑定值。
标识符(table 名称、字段名称等)首先不应该是用户输入。以这种方式处理它们是一个非常糟糕的主意。