没有从MySQL获得预期的价值

时间:2016-10-18 17:55:07

标签: php mysqli

我很尴尬,因为应该是一项非常简单的任务,但我无法弄清楚为什么这不起作用。我使用制表符分隔文件来获取填充MySQL表所需的值。我有2个MySQL表,clientsdata clients表有一个我需要在data表的插入中获取和使用的ID

<?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
?>

当复制粘贴到PHPMyADMIN时,$ getidsql查询会起作用我得到id结果,但是在这个脚本中,mysqli_num_rows总是为零,并且永远不会填充$ idrow,例如;没有错误..但没有结果(好吧,空的结果)

1 个答案:

答案 0 :(得分:0)

原来我的代码工作正常。我的问题在于我正在使用的数据文件。所有数据都包含不可打印的字符,实际上每个字符后跟一个非ASCII字符。在我的查询中使用它之前运行此preg_replace解决了这个问题。

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