Я могу ошибаться, но я не верю, что вы можете указывать поля в качестве параметров в PDO.
Почему бы просто не указать его в качестве аргумента функции? В отличие от данных, предоставляемых пользователем, поля конечны, хорошо определены и не меняются часто. Как в
selectquery('name',$value);
и ваш запрос будет
$field = "name";
$value = "joe";
function selectquery($field, $value)
{
global $dbcon;
$select=$dbcon->prepare("SELECT * FROM tester1 WHERE $field = :value");
if($select->execute(array(':value' => $value)));
//etcetera
Поскольку вы сами вводите имя поля для вызова функции, это безопасно, если вы не беспокоитесь, что собираетесь атаковать себя с помощью SQL-инъекции.
Если по какой-то странной причине имя поля исходит от пользовательского ввода, вы можете создать массив разрешенных полей. Таким образом, вы защищены от внедрения, потому что значения могут поступать только из вашего массива. Я не знаю, почему имя поля берется из пользовательского ввода и поэтому не заслуживает доверия, разве что вы создаете API? В противном случае, вероятно, есть лучший способ достичь цели.
Во всяком случае, это было бы потенциальное решение, использовать белый список для имен таблиц:
$field = "name";
$value = "joe";
$allowed_fields=array('name','other_name','sandwich');
function selectquery($field_name, $value)
{
global $dbcon,$allowed_fields;
if(!in_array($field_name,$allowed_fields)){ return false; }
else{ $field=$field_name; }
$select=$dbcon->prepare("SELECT * FROM tester1 WHERE $field = :value");
if($select->execute(array(':value' => $value)));
//etcetera