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 Fatal error: Call to member function prepare() on the non-object」が発生しました

今私は試しました:

$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