2016-10-18 3 views
0

からの期待値を得ていません。私はタブで区切られたファイルを使ってMySQLテーブルに値を設定する必要があります。私は2つのMySQLのテーブル、clientsとを持っているdataclientsの表は、私がフェッチとコピーがphpMyAdminのに貼り付けるときはこの<em>が</em>かなり単純な作業でなければなりませんが、これは動作していない理由を私は理解することはできませんので、私は恥ずかしいのMySQL

<?php 
// MySQL settings 
define('DB_SERVER', 'localhost');define('DB_USERNAME', 'USER'); 
define('DB_PASSWORD', 'pass');define('DB_DATABASE', 'DB'); 

// connect to DB 
if ($db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE)){} 
else {echo 'Connection to DB failed';die();} 

// load tab delim file 
$file = "file.csv";// TSV actually 
$handle = fopen($file, "r"); // Make all conditions to avoid errors 
$read = file_get_contents($file); //read 
$lines = explode("\n", $read);//get 
$i= 0;//initialize 

// loop over file, one line at a time 
foreach($lines as $key => $value){ 
$cols[$i] = explode("\t", $value); 
// get order ID for this URL 
//$cols[$i]['6'] stores website URLs that match `salesurl` in the clients table 

$getidsql = 'select `id` FROM DB.clients WHERE `salesurl` = \''. $cols[$i]['6'].'\''; 

if ($result = mysqli_query($db, $getidsql)){ 
    $totalcnt = mysqli_num_rows($result); 
    $idrow = mysqli_fetch_array($result); 

echo '<h1>:'. $idrow['id'] .': '.$totalcnt.'</h1>'; //prints ':: 0' 


    } else { 
     echo mysqli_error($db); 
     echo 'OOPS<hr>'. $getidsql .'<hr>';  
    } 
// if $idrow['id'] actually had a value, then 
$insertqry = 'INSERT INTO `data` ......'; 

$i++; 


} //end for each, file line loop 
?> 

$のgetidsqlクエリが仕事私はidを取得しないdataテーブルに挿入して使用する必要がIDを持っていますこのスクリプト内では、mysqli_num_rowsは常にゼロで、$ idrowには決して入力されません。エラーなし..しかし、結果なし(まあ、空の結果)

+2

*「エラーなし」* - クエリでmysqli_error($ db)を使用している場所が表示されません。 –

+0

なぜfile_get_contents/explodeを使用していますか?なぜ、作成したばかりの '$のhandle'を使用して、あたりのライン読みは/あなたのために爆発んfgetcsv()は、使用できませんでしたか?そしてあなたは何もチェックすることを心配しないので、エラーはありません。あなたのクエリ/ファイルコードのどれもが失敗をチェックすることはなく、単に成功を訴えるだけです。 –

+0

lol .. busted!私が意図したのは 'if($ result = mysqli_query($ db、$ getidsql)){'は常にtrueです。私は不自由なOOPSエラーメッセージを受け取っていません。 私は\t 'エコーmysqli_error($デシベル)を追加しました;'その他に、違いはありません。 –

答えて

0

は私のコードは正常に動作していたが判明していません。私の問題は、私が作業していたデータファイルでした。すべてのデータには印字不可能な文字が含まれていましたが、実際には各文字の後に非ASCII文字が続きました。このpreg_replaceをクエリに使用する前にこの問題を解決しました。

$data[$c] = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x80-\x9F]/u', '', $data[$c]); 
関連する問題