PHP взорвать строку на куски, а затем вставить в MySQL - PullRequest
1 голос
/ 29 августа 2011

Как explode натянуть строку на куски и вставить в mysql?

Я хочу вставить каждое слово по предложению, а затем вставить в базу данных mysql. Но я не уверен, что длина $str, это может быть 4 слова, также может быть 10 слов.

Так как сделать foreach, вставить каждое слово в базу данных (каждое слово в одной строке), спасибо.

$str = "This is a test";
$piece = explode(' ',$str);
$num=0;
for(){
...
mysql_query("INSERT INTO test (words) SELECT '".addslashes($piece[$num])."' FROM dual WHERE not exists (SELECT words FROM test WHERE test.words = '".addslashes($piece[$num])."')");
$num++; 
}

Ответы [ 4 ]

2 голосов
/ 29 августа 2011

Довольно просто, также не используйте addslashes(), я бы использовал mysql_escape_string() для всего, что связано с MySQL.

$str = "This is a test"; 
$pieces = explode(' ', $str);
foreach($pieces as $piece)
    mysql_query('insert into test (words) values (\'' . $piece . '\');');

(Конечно, вы можете добавить дополнительные условия, например, убедиться, что слова уникальны и т. Д.)

foreach() довольно прост в использовании:

foreach($array as $value)

или

foreach($array as $key => $value)

где $key и $value обновляются каждую итерацию.

1 голос
/ 29 августа 2011

Аналогично, если вы хотите уменьшить количество запросов, которые вы выполняете (что, в свою очередь, уменьшит время, необходимое вашему сценарию для выполнения):

<?php
$str="This is a test";
$words=explode(' ',mysql_escape_string($str));
$query="insert into test (words) values ('".implode("'),('",array_unique($words))."')";
$result=mysql_query($query);
?>

Он по существу заменяет все пробелы на '), (', а затем заключает все это в запрос

1 голос
/ 29 августа 2011

$str = "This is a test";

// make sure there are only letters and spaces in your text (prevents
// something like "demo," in your database
$str = preg_replace("/[^a-zA-Z0-9\ ]/", " ",$str);

// explode it
$words = explode(' ',$str);

// make sure we have unique words
$words = array_unique($words);

foreach ($words as $word) {
    mysql_query("INSERT INTO test (word) values ('".$word."')";
}
1 голос
/ 29 августа 2011
$str = "This is a test";
$piece = explode(' ',$str);
foreach($piece as $substr){
    mysql_query("INSERT INTO test (words) SELECT '".mysql_real_escape_string($substr)."' FROM dual WHERE not exists (SELECT words FROM test WHERE test.words = '".mysql_real_escape_string($substr)."')");
}
...