2012-03-26 13 views
1

私は、カメラの詳細についていくつかのフィールドを取るフォームを持っています。これは私がJoomlaで作成しているカスタムページです。まず私は、データベース・オブジェクトを取得:mysql_real_escape_stringが適用されません

$db = &JFactory::getDBO(); 

プロセスフォームに入力されたカメラの名前をしてDBに追加します。

$add_name = $_POST['camera_name']; 
$query_insert_camera = "INSERT INTO #__cameras (camera_name, ... , user_id) VALUES ('".mysql_real_escape_string($add_name)."', ... ,'".$user->id."')"; 
$db->setQuery($query_insert_camera); 
$db->query(); 

私はちょうどカメラ名に空の文字列を取得します。私がmysql_real_escape_stringを取ってもうまくいく。私はmysql_real_escape_stringが私は接続を確立している方法が好きではないと推測している...私は思います。

アイデア?

+0

警告が表示されていますか?ドキュメントには、使用する接続が見つからない場合は警告が表示されます。それ以外の場合は、関数ハンドルに接続ハンドルを置くことをお勧めします。 – staticsan

+0

'getDBO()'は実際にどのような接続をしていますか? 'mysql_connect()'、 'mysqli()'、またはPDOで作成していますか?どんなAPIが呼び出されていますか? 'mysql_real_escape_string()'は 'mysql_connect()'で接続が確立された場合にのみ利用可能です。 –

+1

なぜJoomlaのgetVarを使用しないのですか? http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar – Shaz

答えて

1

あなたはJRequestに見てみたいことがあります:: getVar http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar

しかし、モジュール内で使用できることは表示されません。http://groups.google.com/group/joomla-dev-general/browse_thread/thread/15ebde03b858c9e8

+0

ありがとうございます。どのように脱出したのか分かりますか?私が結果をエコーし​​ただけでは、実際にエスケープ文字を見ることはありません。 – Tom

+0

私はまだ自分自身を勉強しています。私がその部分で苦労していたとき、私は逃げるかどうかを調べるために入力することによってそれを壊そうとしました。 JRequest :: getVarを使う前に、それが壊れました。 – Gisto

-1

あなたのコードは動作するはずです。私はmysql_real_escape_string()がとほぼ同じと同じ方法で使用されているのを見るhere

そのコードの違い、そして何を持っているが、マイナーですが、多分その代わり、このような何かを試してみてください。

$db = &JFactory::getDBO(); 

// Escape the POST var as you grab it 
$add_name = mysql_real_escape_string(JRequest::getVar('camera_name', '', 'post', 'string')); 

$query_insert_camera = "INSERT INTO #__cameras (camera_name) VALUES ('" . $add_name . "')"; 
$db->setQuery($query_insert_camera); 
$db->query(); 
+0

残念ながら、それでも空の文字列を出力します。 – Tom

1

私は、Joomlaの内のMySQL(I)_real_escape_string()を使用しての問題に出くわしましたdb接続を最初のパラメータとして渡す必要があることがわかりました。

$db = JFactory::getDbo(); 
$myVar = JRequest::getVar('myVarName'); 
$mysqlSafeVar = msqli_real_escape_string($db->getConnection(), $myVar); 
$sql = 'INSERT INTO #__mytable (' .$db->nameQuote('myField'). ') VALUES (' . $db->quote($mysqlSafeVar) . ')'; 
$success = $db->execute(); 
関連する問題