Имея проблемы с ошибками номера параметра в PDO insert [duplicate]

Если мы рассмотрим общие сценарии, в которых может быть выбрано это исключение, доступ к свойствам с объектом вверху.

Пример:

string postalcode=Customer.Address.PostalCode; 
//if customer or address is null , this will through exeption

здесь, если адрес имеет значение null, то вы получите NullReferenceException.

Итак, в качестве практики мы всегда должны использовать проверку нуля, прежде чем обращаться к свойствам в таких объектах (особенно в общих)

string postalcode=Customer?.Address?.PostalCode;
//if customer or address is null , this will return null, without through a exception
11
задан Travis 24 June 2010 в 10:14
поделиться

2 ответа

Используйте функцию обертки, наивная функция замены будет достаточной.

if (strpos($sql, ":")) {
    $i = -1;
    while (strpos($sql, "?") && isset($parameters[++$i])) {
        $parameters[":p$i"] = $parameters[$i];
        unset($parameters[$i]);
        $sql = preg_replace("/[?]/", ":p$i", $sql, 1);
    }
}

Смешать $ sort и $ dir непосредственно в запрос sql sql. Эти два являются идентификаторами SQL, а не данными.

2
ответ дан mario 27 August 2018 в 00:18
поделиться

Да, это невозможно.

PDO.prepare

Вы не можете использовать маркеры параметров имени и вопросительного знака в одном и том же выражении SQL; выберите один или другой стиль параметра.

10
ответ дан Naktibalda 27 August 2018 в 00:18
поделиться
  • 1
    Хорошо, спасибо за информацию. Учитывая, что у меня есть переменное количество параметров, невозможно ли связать переменные с предложениями ORDER BY и LIMIT? (Как я понимаю, вы можете делать это только с помощью именованных параметров. Но именованные параметры не поддаются ситуациям с неизвестным количеством параметров.) – Travis 24 June 2010 в 10:27
  • 2
    Вы не можете связывать имена столбцов, поэтому вы не можете связывать: sort и: dir. Дайте имена всем параметрам. – Naktibalda 24 June 2010 в 11:19
Другие вопросы по тегам:

Похожие вопросы: