У меня есть значения из текстового файла и из базы данных MySql Я хотел бы сравнить:Как я могу создать массив из переменной?
Вот значения я получаю из текстового файла:
foreach($list as $row) {
echo $row['cat']."<br>";
}
Мой результат:
A2345
B7890
Вот значение из моей базы данных:
$sql = "SELECT cat FROM animals WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute();
foreach ($pdo->query($sql) as $row) {
echo $row['cat']."<br>";
}
результат:
A2345
B7890
До сих пор все выглядит хорошо.
Теперь мои проблемы:
Для сравнения содержимого базы данных и содержимое текстового файла, я хотел бы сохранить эти два результата, каждый в массиве и сравнить их.
Так что моя цель состоит в том, чтобы для обоих источников следующему результату:
array(2) {
["cat"]=>
string(5) "A2345"
["cat"]=>
string(5) "B7890"
}
Таким образом, в конце концов, я мог бы написать:
If (array1 == array2) { echo "The content of database and textfile match" }
И тут приходит моя проблема. Я не знаю, как это сделать. Потому что, если я пишу ...
echo "<pre>";
var_dump ($list);
echo "</pre>";
... Я получу этот результат:
array(2) {
[0]=>
array(2) {
["cat"]=>
string(5) "A2345"
["name"]=>
string(3) "tom"
}
[1]=>
array(2) {
["cat"]=>
string(5) "B7890"
["name"]=>
string(3) "sam"
}
}
И если я пишу это ...
echo "<pre>";
var_dump ($list["cat"]);
echo "</pre>";
... Я буду получить:
NULL
А также с получением результата в базе данных для массива - огромная проблема для меня.
я писал:
foreach ($pdo->query($test) as $row) {
$data[] = $row;
echo "<pre>";
var_dump($data);
echo "</pre>";
}
Но мой результат:
array(1) {
[0]=>
array(2) {
["cat"]=>
string(32) "A2345"
[0]=>
string(32) "A2345"
}
}
array(2) {
[0]=>
array(2) {
["cat"]=>
string(32) "A2345"
[0]=>
string(32) "A2345"
}
[1]=>
array(2) {
["cat"]=>
string(32) "B7890"
[0]=>
string(32) "B7890"
}
}
Я сожалею, что я так растерялся, что делать, но я благодарен за любой намек.
Вам не нужно всасывать весь db на php, чтобы сравнить его с файлом. все, что вам нужно, это выяснить, сколько значений в вашем файле, и проверить, все ли они в db. например 3 значения, '' select count (*) from ... где значения в (val1, val2, val3) ', если счет возвращается как' 3', вы знаете, что они все там. –
@Marc: Мне нужно сравнить строки. Итак, если в текстовом файле есть ошибка с «A2345», например, «A234?» то мне нужно сообщение об ошибке – Jarla
Обратите внимание, что то, к чему вы стремитесь (структура массива), будет невозможным, так как вы будете заменять значения клавиш. Когда вы установите '[" cat "] => « A2345 »', если вы попытаетесь установить '[" cat "] =>" B7890 "', оно заменит первое значение ('A2345') на' B7890'. Что касается результата запроса, так как кажется, что вы используете PDO, с [fetch_assoc] (http://php.net/manual/en/pdostatement.fetch.php) вы можете получить результат без индекса 'column'. – FirstOne