Вставить несколько строк в MySQL не работает?Я использую php 5, поэтому он не работает? - PullRequest
0 голосов
/ 04 сентября 2011

У меня есть готовый скрипт ниже, который идет в файле insert_dimensions.php. Под пунктирной линией есть другой скрипт, который идет на веб-странице. Они должны работать, чтобы поместить кучу разных чисел в таблицу mysql в разные строки . Как показано ниже, при первом запуске скрипта он добавляет строку в mysql, но ставит ноль в строке. Во второй раз, когда скрипт запускается, он помещает то, что должно было быть в строке 1, в строку 2. И он добавляет только 1 строку, хотя он должен добавлять более 1 строки. В остальное время сценарий запускается, это одно и то же. Каждый раз добавляется только 1 строка и вводится значение, которое должно было быть введено ранее.

Я перепробовал много вещей. Я не знаю, на какую страницу они должны заходить, потому что в постах, которые их содержат (от поиска в Google), обычно не говорится, на какую страницу поместить коды. Я попытался поставить [] и другие типы скобок с и без $ i справа от добавленного веса. Ничего не сработало. Я не пробовал использовать переменную $ key, которую иногда вижу, но мне было интересно, может ли это как-то решить проблему. В столбце mysql, в который это входит, добавлен вес типа INT. Я попытался изменить его на тип varchar, но он все еще не работал.

<?php
$con = mysql_connect("localhost","blah","blah");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("blah", $con);
$sql="INSERT INTO dimensions (weight_ounces, page_link, session_id)
VALUES
('$_POST[addedWeight]','$_POST[PageLink]','$_POST[SessionID]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
mysql_close($con);
?>



--------------------------------------------------------------------------------------
<form action="insert_dimensions.php" method="post">
<?php
print "<input type='hidden' name='SessionID' value='" . session_id() . "'>";
$current_file_name = basename($_SERVER['REQUEST_URI'], ".php");
print "<input type='hidden' name='PageLink' value='" . $current_file_name . "'>";
mysql_connect("localhost", "blah", "blah") or die(mysql_error()); 
mysql_select_db("blah") or die(mysql_error()); 
$data = mysql_query('SELECT weight_ounces FROM dimensions_list WHERE session_id = "' . session_id() . '"'); 
$params = array();
while ($row = mysql_fetch_assoc($data)) {     
$params[] = $row['weight_ounces']; 
}
$combinations=getCombinations($params);
function getCombinations($array)
{
    $length=sizeof($array);
    $combocount=pow(2,$length);
for ($i=1; $i<$combocount; $i++)
    {
$binary = str_pad(decbin($i), $length, "0", STR_PAD_LEFT);
        $combination='';
        for($j=0;$j<$length;$j++)
        {
            if($binary[$j]=="1")
                $combination+=$array[$j];
        }
        $combinationsarray[]=$combination;
$varw = $combination;
print "<input type='text' name='addedWeight' value='{$varw}'>";
    }
    return $combinationsarray;
} 

1 Ответ

0 голосов
/ 04 сентября 2011

Ваш код кажется странным.Несколько комментариев, которые могут помочь:

1 - в этой строке есть проблема:

print "<input type='text' name='addedWeight' value='{$varw}'>";

Вы, вероятно, должны использовать

print <input type='text' name='addedWeight[]' value='{$varw}'>";

То, как вы это делаете сейчас,Вы передадите только последний добавленный вес php, который вставляется в базу данных.Вам нужно иметь массив и передавать массив.

2 - вам, вероятно, нужен цикл в вашем первом скрипте (тот, который выполняет вставку).После того, как вы передали добавленный вес в виде массива, вы можете сделать что-то вроде

<?php
$con = mysql_connect("localhost","blah","blah");
if (!$con)
{
  die('Could not connect: ' . mysql_error());
}
mysql_select_db("blah", $con);

$addedWeight = $_POST[addedWeight]; <- load array passed into local variable
$counter = sizeof($addedWeight); <- count the number of items in the array

for ($i = 0; $i < $counter; $i++) <- here is the loop that will insert all the elements into the database.
{
  $sql="INSERT INTO dimensions (weight_ounces, page_link, session_id)
  VALUES
  (addedWeight[$i],'$_POST[PageLink]','$_POST[SessionID]')";

  if (!mysql_query($sql,$con))
  {
    die('Error: ' . mysql_error());
  }
}
mysql_close($con);
?>

Я надеюсь, что это имеет смысл и поможет вам решить проблему.Если нет, пожалуйста, напишите снова.

И еще один последний комментарий - я бы переместил функцию за пределы формы.Мне нравится хранить все мои функции в отдельном файле или в верхней или нижней части скрипта.Если вы решите сделать это, строка, которую я обсуждал выше в моем пункте 1, будет выглядеть примерно так:

print "<input type='text' name=addedWeight[] value='$combinations'>";

Это, конечно, личное предпочтение.

Удачи!

...