簡體   English   中英

如何使用循環在mysql中插入數組值

[英]How to insert array values in mysql with a loop

用jquery讀取Textarea,在Array中分割每一行然后用ajax通過php在mysql中發布該數組,但結果只插入第一個值。

表:

CREATE TABLE IF NOT EXISTS addresses ( 
    id int(8) NOT NULL PRIMARY KEY, 
    user_id int(8) DEFAULT NULL, 
    address_value varchar(100) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

這是Jquery代碼:

$('#insertad').click(function(){
    var lines = $('#txtArea').val().split('\n');

    var phparray = new Object();

    for(var i = 0;i < lines.length;i++){
        phparray[i] = lines[i]; //store value in object
    }
    $.post('functions.php?action=insertad', {array1:$.param(phparray)}, function(resp){
        $('.text-success').html(resp);  
        if(resp == 'Added'){

        $('.text-success').html('Added Address :');

    }   
    }); 

});

這是PHP代碼:

if ($action == 'insertad') {
    $pieces   = explode('&', $_POST['array1']); //explode passed serialized object
    $phparray = array();
    foreach ($pieces as $piece) {
        list($key, $value) = explode('=', $piece);
        $phparray[$key] = $value; //make php array
    }

    $length = count($phparray);

    for ($i = 0; $i < 7; $i++) {

        $sql     = "select address_value from addresses where address_value = '$phparray[$i]'";
        $qry     = mysql_query($sql);
        $numrows = mysql_num_rows($qry);
        if ($numrows > 0) {
            echo "One Found !!" ;
        } else {
            $sql = "insert into addresses (address_value) values ('$phparray[$i]')";
            $qry = mysql_query($sql);
            if ($qry) {
                echo "Added";
            }
        }
    }
}

試試這個......

JS:

var $textarea = $('textarea'); // maybe you have to specific your selector!
var textArray = $textarea.val().split("\n"); // this array is already done, your have not todo next for() loop

$.post('functions.php', {
    action: 'insertad', 
    array1: textArray
}, function(results) {
  $.each(results, function(reslt) {
    if(result === 'Added') {
      $('.status').append(result);
    }
    else {
        $('.status').append(result);
    }
  });       
});

PHP:

if($action === 'insertad') {
    $results = [];
    $input = $_POST['array1'];

    foreach($input AS $textLine) {

        $escapedTextLine = mysqli_real_escape_string($resource, $textLine);

        $result = mysqli_query($resource, 'select address_value from addresses where address_value = "'.$escapedTextLine.'"');
        $affectedRows = mysqli_num_rows($result);

        if($affectedRows > 0) {
            $results[] = 'One Found !!';
        }
        else {
            $result = mysqli_query($resource, 'INSERT INTO `adresses` (`address_value`) VALUES("'.$escapedTextLine .'");

            if($result) {
                results[] = 'Added!';
            }

        }
    }

   return $results; // we return all done results to check this array in ajax response
}

注意:我編寫了代碼盲,所以也許你必須做一些小改動,例如你的變量或類似的東西。

注意2:我用mysqli編寫代碼,因此你必須重寫數據庫連接設置代碼。

請永遠不要忘記使用mysqli_real_escape_string對用戶內容做一些事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM