MYSQL - вставить слева - PullRequest
       2

MYSQL - вставить слева

0 голосов
/ 24 марта 2011

Прежде всего, спасибо за вашу помощь, я спрашиваю, как я могу вставить данные в поля, начиная слева? В зависимости от сущности иногда несколько полей в конце остаются пустыми, но мне нужно вставить заполненные поля в таблицу. Если я пытаюсь сделать это, я, очевидно, получаю ошибку несоответствия значений столбца.

Спасибо!

Ответы [ 5 ]

2 голосов
/ 24 марта 2011

Количество столбцов, которое вы используете, и количество значений, которые вы пытаетесь вставить, должны совпадать.Вы можете указать, что вы хотите вставить, чтобы вам не нужно пропускать ненужные столбцы (и вам не нужно пропускать «пробелы»).

INSERT INTO Store_Information (store_name, Sales, Date)
VALUES ('Los Angeles', 900, 'Jan-10-1999')

Дополнительная информация: http://www.1keydata.com/sql/sqlinsert.html

2 голосов
/ 24 марта 2011

Просто укажите только имена полей, которые вы собираетесь вставить в данный момент:

INSERT INTO table (field1, field2, field3) VALUES (value1, value2, value3)

или так

INSERT INTO table SET field1=value1, field2=value2, field3=value3

Независимо от того, слева или справа или в клеточку

, поскольку SQL-запрос - это просто строка, вы можете использовать некоторый PHP-код, чтобы построить эту строку так, как вы хотите.

Вот пример кода в виде очень простой вспомогательной функции для динамического создания оператора SET:

function dbSet($fields) {
  $set='';
  foreach ($fields as $field) {
    if (isset($_POST[$field])) {
      $set.="`$field`='".mysql_real_escape_string($_POST[$field])."', ";
    }
  }
  return substr($set, 0, -2); 
}

может управляться массивом $fields. используется как это

//if we have full set of data
$fields = explode(" ","name surname lastname address zip fax phone");
$query  = "INSERT INTO $table SET ".dbSet($fields);

//if we have only three fields ready
$fields = explode(" ","name surname lastname");
$query  = "INSERT INTO $table SET ".dbSet($fields);

но вам крайне необходимо изучить основные строковые операции PHP, чтобы иметь возможность делать такие вещи самостоятельно.
Строковые операции наиболее важны в PHP, так как почти каждая задача для PHP - это просто манипулирование строками, как в вашем случае.

1 голос
/ 24 марта 2011

Используйте запросы типа

 insert into table set col1=val1, col2=val2;

или

 insert into table(col1, col2) values(val1, val2);

Это единственный способ обойти это.Я думаю, что наиболее часто используется метод 2.

Если есть какой-либо способ, которым вы можете предоставить значения по умолчанию для каждого столбца, используйте их для столбцов, для которых у вас нет значений.

0 голосов
/ 24 марта 2011
mysql_query("INSERT INTO People (First_Name, Last_Name, Age)
VALUES ('Marcus', 'Porter', '28')");

mysql_query("INSERT INTO People (First_Name, Last_Name, Email)
VALUES ('Marcin', 'Kruk', 'marcin.kruk@gmail.com')");
0 голосов
/ 24 марта 2011

если все данные могут быть «NULL», вы можете настроить запрос с переменными, которые, если не установлены, равны NULL, например:

$col1 = null; $col2 = null; $col3 = null; $col4 = null; $col5 = null;

, затем заполнить столбцывам нужно $col1 = 'val1'; $col2 = 'val2';

$query = "INSERT INTO (col1, col2, col3, col4, col5) VALUES ($col1, $col2, $col3, $col4)";

С уважением, я никогда не буду использовать что-то подобное ... но вы просили об этом ...

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