Разбор файла fasta с использованием PHP - PullRequest
0 голосов
/ 04 марта 2019

У меня есть файл fasta input.fa , который выглядит следующим образом:

>KJH325_Org_name_strain
ANNTTHWQLPMCVREEDFSC
>IJA254.1_Org_name
HITYYPQLKSSCMART
>ASDL658_Org_name_str
TTILPQWYERSAASMNCFGHDKLCC
and so on.

Я хочу ввести эти короткие последовательности в таблицу Mysql, используя PHP, так что KJH325(т. е. идентификатор после первого подчеркивания '_') входит в столбец идентификаторов, а остаток Org_name or Org_name_strain - в столбец orgname, а короткая последовательность в следующей строке - в столбец последовательности.Я пробовал это:

<?php
$servername = "localhost";
$dbname = "shortseqdb";

// Create connection
$conn = mysqli_connect($servername, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully\n\n";

$fasta_file = 'input.fa';
$header='';
$id = '';
$org_name = '';

$lines = file($fasta_file) or die("Unable to open file!");

foreach ($lines as $line) {
   $header = strpos($line, '>'); <---- UPDATED
   if ($header!==false) {
      $key = trim(substr($line, 0, $header));
      $value = trim(substr($line, $header+1));
        list($id, $org_name) = explode("_",$key);


            $sql = "INSERT INTO `seqs` (`ID`, `org_name`, `sequence`) VALUES ($id, $org_name, $value)";
    }
}

if (mysqli_query($conn, $sql)) {
    echo "Values inserted successfully in the table seqs\n";
} else {
    echo "Error inserting values: " . mysqli_error($conn);
}
mysqli_close($conn);

?>

Соединение успешно, но я получаю следующую ошибку:

Соединение успешно

Примечание: Неопределенное смещение: 1 в C: \ xampp \ htdocs \ test.php в строке 26

Ошибка вставки значений: база данных не выбрана

Может кто-нибудь помочь мне, где этот скрипт неправильный?Спасибо!

1 Ответ

0 голосов
/ 05 марта 2019

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

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "shortseqdb";
// Create connection
$conn = mysqli_connect($servername, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully\n\n";
// select a db
mysqli_select_db($conn,"shortseqdb") or die("Could not select the specified database");

И использовать mysqli_db_connect($connect,dbname) для выбора указанной базы данных.Тогда это сработало отлично.

Спасибо за ваши комментарии.

...