0

我已经尝试了几种使用参数化语句的方法,但我仍然遇到问题。

起初我尝试了参数化语句:

$dbc = new PDO("mysql:host=localhost;dbname=the_name", 'the_login', 'the_pass');
$query = $dbc->prepare('INSERT INTO req_form (lname, fname, email, address, city, state, zip, phone, affiliation, role, ip_address, abc, ace, carr, ema, tuac, olatc_temp) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
$query->execute(array($lname, $fname, $email, $addr, $city, $state, $zip, $phone, $affiliation, $prof_role, $_SERVER['REMOTE_ADDR'], enum($abc), enum($ace), enum($carr), enum($ema), enum($tuac), enum($last)));

但得到“PHP 致命错误:在非对象上调用成员函数 prepare()”

现在我试过了:

$conn = new mysqli('localhost', 'the_login', 'the_password', 'the_name');
$sql = 'INSERT INTO req_form (lname, fname, email, address, city, state, zip, phone, affiliation, role, ip_address, abc, ace, carr, ema, tuac, olatc_temp) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
$query = $conn->prepare($sql);
$query->bind_param('ssssssissssssssss', $lname, $fname, $email, $addr, $city, $state, $zip, $phone, $affiliation, $prof_role, $_SERVER['REMOTE_ADDR'], enum($abc), enum($ace), enum($carr), enum($ema), enum($tuac), enum($last));
$query->execute();

我仍然收到错误消息,我是否可能在插入语句中使用了保留名称?

编辑(添加枚举函数):

function enum($ar){
    if(count($ar)>1)
        return 'BOTH';
    else
        return $ar;
}

编辑(phpinfo() 的 mysqli 部分的输出:

mysqli
MysqlI Support enabled 
Client API library version  mysqlnd 5.0.8-dev - 20102224 - $Id: SOME_VALUE_WAS_HERE $  
Active Persistent Links  0  
Inactive Persistent Links  0  
Active Links  0  

Directive Local Value Master Value 
mysqli.allow_local_infile On On 
mysqli.allow_persistent On On 
mysqli.default_host no value no value 
mysqli.default_port 3306 3306 
mysqli.default_pw no value no value 
mysqli.default_socket no value no value 
mysqli.default_user no value no value 
mysqli.max_links Unlimited Unlimited 
mysqli.max_persistent Unlimited Unlimited 
mysqli.reconnect Off Off 

当我把 var_dump($conn) 放在第一行之后它会打印出东西,如果我把它放在 $conn->prepare 的正上方,它会显示 NULL

4

0 回答 0