2016-04-22 10 views
1
$db_col=$_POST['db_col']; //string 
$db_val=$_POST['db_val']; //string 
$name=$_POST['name']; //string 

// connect to db 

$query="UPDATE `table`.`person` SET `$db_col` = ? WHERE CONCAT(first, ' ', last) = ?;"; 
$stmt = $web_dbi->prepare($query); 
$stmt->bind_param("ss", $db_val, $name); 
$stmt->execute(); 

取得エラー:PHP変数のSQL動的列名?

Call to a member function bind_param() on a non-object

+1

あなたの質問はhttp://php.net/manual/en/mysqli.error.phpに失敗しました。おそらくhttp://php.net/manual/en/function.error-reporting.phpのダッシュ –

+0

私は、私は意識している。あなたはどんな解決策を提案しますか?私の構文は間違っていますか? – faalbane

+0

'$ db_col'はSQLインジェクションを開きます。ホワイトリストでその値をチェックする必要があります。 – chris85

答えて

1

SQL文が正しくありません:

$query="UPDATE `table`.`person` SET `$db_col` = ? WHERE CONCAT(first, ' ', last) = ?;"; 

形式は次のとおりです。

UPDATE table SET column = ? WHERE [conditional]; 

あなたはtableperson間のドットを持っている、と私なぜあなたは隣に2つのテーブルがあるのか​​分からないあなたが一度に1つしか更新できないときには、お互いに別のエラーです。あなたはどこクエリを記述し、データベースは見るものを、ここでは正確に見ることができる方法は、出力を貼り付け、右後

echo "query is: ".$query."<br>"; 

:それは問題が解決しない場合

、次の操作を行いますエラーがある:)

は、それはあなたのための問題を修正した場合、私に教えてください!