2016-09-07 16 views
0

私は、php implodeを使用して入力フィールドの配列からフェッチした値をデータベーステーブルのカラムに挿入しています。implodeを使用してデータベーステーブルのカラムに値を挿入する

$insert_row =mysql_query("INSERT INTO ActivityProduct (Ideal) VALUES (" . implode('),(', $_POST["ideal"]) . ")"); 

入力フィールドの2つの異なる配列からフェッチした値を2つのデータベーステーブル列に挿入したいと考えています。以下のコードは生成し、エラー:

$insert_row =mysql_query("INSERT INTO ActivityProduct (AID,Ideal) VALUES (" . implode('),(', $_POST["act"]) . " ," . implode('),(', $_POST["ideal"]) . ")"); 
iは、INSERTステートメントでは、2つの配列を表現したい

として、例えば、(10,21)、(20,31)、(30,41) (10)、(21)、(31)、(30)、(41)

どのようにこれについて行くかについてのアイデアは、高く評価されています。それはあなたの

$ideal=implode('),(', $_POST["ideal"]); 
$act=implode('),(', $_POST["act"]); 

$insert_row =mysql_query("INSERT INTO ActivityProduct (Ideal) VALUES (" .mysql_real_escape_string($ideal). ")"); 
$insert_row =mysql_query("INSERT INTO ActivityProduct (AID,Ideal) VALUES (" .mysql_real_escape_string($ideal). " ," .mysql_real_escape_string($act). ")"); 

を支援し、mysqlmysqli instedを使用しようとする場合があり、このような

+0

どのようなエラーが発生しますか? $ _POSTの内容は何ですか?示されているように、クエリに直接送信された値を使用してSQLインジェクションに脆弱です。 – Dave

+0

これはエラーをプロデュースします:列数が行1の値と一致しません – Kenn

答えて

0

使用。 mysqli

$insert_row = mysqli->prepare("INSERT INTO ActivityProduct (Ideal) VALUES ($ideal)"); 
$insert_row =mysql_query("INSERT INTO ActivityProduct (AID,Ideal) VALUES ($ideal,$act)"); 
0

クエリでその作業をこのクエリを置き換えます

$insert_row =mysql_query("INSERT INTO ActivityProduct (AID,Ideal) VALUES ('". implode('),(', $_POST["act"]). "' ,'" .implode('),(', $_POST["act"])."')"); 
+0

動作しますが、多くの行のレコードではなく、1行のレコードしか格納しません。あなたのコードに従って、私は2つの配列をエコーし​​ます。 $ Ideal = implode( ')、('、$ _POST ["ideal"]); $ act = implode( ')、('、$ _POST ["act"]); ECHO "'$ Ideal、$ act'"; 1)、(1)、(1)、(1)、(1,19)、(18)、(17)、(16)、(15)、(14) NB://のみ(1,19)が格納されています – Kenn

+0

あなたが取得していない...取得して何をしたいかであなたの質問を編集してください。 –

0

するmysql_queryの拡張子はPHP 5.5.0で廃止されました、そしてそれはPHP 7.0で削除されたことに注意してください.0。代わりに、MySQLiまたはPDO_MySQL拡張子を使用する必要があります。

これは、PDOを使用するかどうかを検討するための例です。

// Build the parameter list 
$sql = array(); $params = array(); 
for ($i=0; isset($_POST['ideal'][$i])&&isset($_POST['act'][$i]); $i++) { 
    $sql[] = ":act_{$i}, :ideal_{$i}"; 

    $params["ideal_{$i}"] = $_POST['ideal'][$i]; 
    $params["act_{$i}"] = $_POST['act'][$i]; 
} 

// Then run the query safely using PDO 
$dbh = new PDO('mysql:host=localhost;dbname=test', "user", "pass"); 
$stmt = $dbh->prepare("INSERT INTO ActivityProduct (AID, Ideal) VALUES (".implode("), (", $sql).")"); 
$result = $stmt->execute($params); 
関連する問題