PHP оператор foreach вставляет проблему с массивами - PullRequest
1 голос
/ 09 апреля 2011

Эй, ребята, я сейчас изучаю php, и мне нужно сделать это

  $connection = mysql_open();
  $likes= array();
  foreach($likes as $like)
  {

  $insert3 = "insert into ProfileInterests " .
    "values ('$id', '$like', null)";
  $result3 = @ mysql_query ($insert3, $connection)
    or showerror();

  }
  mysql_close($connection)
    or showerror();

По какой-то причине это не работает = / Я не знаю почему. $ likes - это массив, который был введен пользователем. Мне нужно, чтобы он вставлялся в таблицу несколько раз, пока все элементы в массиве не будут в нем.

РЕДАКТИРОВАТЬ Я исправил проблему, когда закрывал ее в цикле foreach. Между прочим, mysql_open - моя собственная функция.

Есть идеи?

Ответы [ 5 ]

1 голос
/ 09 апреля 2011

В вашем примере один массив лайков - это пустой массив, я полагаю, вы исправили это в коде, который вы запускаете.

Во-вторых, вы закрываете соединение MySQL при первом запуске цикла, что препятствует выполнению последующих запросов MySQL.

0 голосов
/ 09 апреля 2011

Хотя многие новички в PHP (, включая меня ) начинают работать с базами данных из хорошего ole 'mysql_connect/query/etc., я не могу не предложить вам заглянуть в PDO, PHP Объекты данных. В зависимости от ваших предыдущих знаний и опыта программирования, может быть более крутая кривая обучения. Тем не менее, он гораздо более мощный, расширяемый и т. Д .; Я использую PDO во всех моих производственных и кодовых базах данных.

0 голосов
/ 09 апреля 2011

Вот правильный форматированный код для вставки данных ... Вы можете использовать это.

// ПОДКЛЮЧЕНИЕ БАЗЫ ДАННЫХ

$conn=mysql_connect(HOST,USER,PASS);
$link=mysql_select_db(DATABASE_NAME,$conn);

// Функция для вставки данных

function insertData($tableName,$valuesArray) {

        $sqlInsert="";
        $sqlValues="";

        $arrayKeys = array_keys($valuesArray);
        for($i=0;$i < count($arrayKeys);$i++)
        {
            $sqlInsert .= $arrayKeys[$i].",";
            $sqlValues .= '"'.$valuesArray[$arrayKeys[$i]].'",';
        }

        if($sqlInsert != "")
        {
            $sqlInsert = substr($sqlInsert,0,strlen($sqlInsert)-1);
            $sqlValues = substr($sqlValues,0,strlen($sqlValues)-1);
        }

        $sSql = "INSERT INTO $tableName ($sqlInsert) VALUES ($sqlValues)";  
        $inser_general_result=mysql_query($sSql) or die(mysql_error());
        $lastID=mysql_insert_id();
        $_false="0";
        $_true="1";
        if(mysql_affected_rows()=='0')
        {
            return $_false;
        }
        else
        {
            return $lastID;
        }
    }

// Конец функции

0 голосов
/ 09 апреля 2011

Вы закрываете соединение в петле foreach.

0 голосов
/ 09 апреля 2011

нет такой функции, как mysql_open

, вам может понадобиться mysql_connect

, а также $likes переменная пуста.поэтому никакие итерации foreach не будут выполняться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...