2017-01-25 10 views
0

プリペアドステートメントを使用して特定のテーブルから非プライマリキー列を削除する方法はありますか?
私はこの
準備文を使用して列を削除する方法は?

$conn = new mysqli($servername, $username, $password, $dbname); 

// Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

// prepare and bind 
    $stmt = $conn->prepare("ALTER TABLE staff DROP COLUMN :col_name"); 
    $stmt->bind_param(":col_name", $column_name); 

// set parameters and execute 
    $column_name = "job_type1"; 
    $stmt->execute(); 

を試してみました。しかし、このエラーが出る:

Call to a member function bind_param() on boolean

+0

これは、 '$ stmt'の値が' false'であることを意味します。さて、 'prepare()'は失敗しました。 – Xorifelse

+0

mysqliでは名前付きパラメータを使用できません。あなたは2つのAPIを混在させています。 – Mike

答えて

0

文書に述べられているように:

mysqli_prepare() returns a statement object or FALSE if an error occurred.

そのため、返される値は前FALSEであるかどうかをチェックする必要があり続ける。

これはエラーの原因になっている可能性があります。

さらに、あなたは呼び出すことで、実際のエラーが何であるかを見ることができます:

$mysqli->error 

その後。

+0

しかし、彼は呼び出している:新しいmysqli。だから、彼はmysqliを使うのですよね? –

+0

おっと。あなたが正しい。名前付きのパラメータが私を捨てました。 – Mike

関連する問題