PHP - 如何将POST值或NULL值(非NULL字符串)传递给存储过程

时间:2013-06-17 19:35:19

标签: php sql post stored-procedures odbc

在我的页面上,我有几个文本框,其中两个,名字和姓氏,不是必需的。如果在这些字段中的一个或两个中都没有输入任何内容,我需要将NULL作为任何内容而不是NULL作为字符串值插入。目前它正在输入它们作为字符串值。我需要做什么才能插入NULL值而不是字符串?

PHP代码

<?php
// SQL connection and other variables...

if (!empty($_POST['firstname'])) {
    $firstname = $_POST['firstname'];
} else {
    $firstname = 'NULL';
}
if (!empty($_POST['lastname'])) {
    $lastname = $_POST['lastname'];
} else {
    $lastname = 'NULL';
}

$sp = "exec sp_test_proc '$street1', '$street2', '$firstname', '$lastname'";
$res = odbc_exec($conn, $sp);
?>

如果我传入NULL而不是任何参数的变量,它可以正常工作。不确定使用变量导致问题的原因。

2 个答案:

答案 0 :(得分:2)

撰写NULL代替'NULL'

您使用引号将其设为字符串。

答案 1 :(得分:1)

您需要将NULL作为不带引号的字符串传递。这是因为您正在构建纯SQL。 因此,请确保该声明是有效的。

对于参数化查询,它应该是NULL值而不是NULL字符串。