【问题标题】:Passing array string php传递数组字符串php
【发布时间】:2018-03-19 12:40:15
【问题描述】:

我从这样的文本文件结构中读取: 啊啊啊 bbb ccc 并写入数组,现在我需要使用此名称进行查询,选择具有此名称的所有列并将结果写入 csv 文件,文件读取工作正常但查询仅返回 1 行,仅返回 ccc 数组的最后一个. 帮帮我。

这是我的代码:

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $db = "tirocinioriginale";

    $con = mysqli_connect($servername, $username, $password,$db);


    if (!$con) {
        die("Connessione fallita: " . mysqli_connect_error());
    }
    $myfile = fopen("aziende1.txt", "r") or die("Unable to open file!");
    //echo fread($myfile,filesize("aziende1.txt"));

    $aziende = array();

    while (!feof($myfile)) {
       $aziende[] = fgets($myfile);
    }
    fclose($myfile);


   echo implode(',',$aziende);
    $query = "SELECT * FROM azienda  WHERE nome IN ('".implode("','",$aziende)."')";
    $result = $con->query($query);
    $azienderow = array();
    while($row = $result->fetch_assoc())
    {
      array_push($azienderow, $row);
    }
      echo "Connessione successo";

   var_dump($azienderow);


    //$row = mysql_fetch_assoc($result);

  /*  $fp = fopen('dumpaziende.csv', 'w');

    foreach ($row as $val) {
      fputcsv($fp, explode($val));
    }

fclose($fp);
*/
  //var_dump($aziende);
mysqli_close($con);
?>

如果使用我的代码,结果是: 文件: 艾特克 意大利数据

aitech ,ItaldataConnessione successoarray(1) { [0]=> array(12) { ["id_azienda"]=> string(3) "244" ["nome"]=> string(8) "ItalData" [ "settore"]=> string(17) "Sviluppo software" ["website"]=> string(5) "sadsa" ["email"]=> string(11) "dasdasddsad" ["curriculum_aziendale"]=> string (9) "dasdasdas" ["tematiche"]=> 字符串(7) "fafdaew" ["n_borse"]=> NULL ["data_stipula_convenzione"]=> 字符串(10) "2018-03-14" ["data_fine_convenzione" ]=> string(10) "2018-03-20" ["attiva"]=> string(1) "1" ["tipologia_id"]=> string(1) "3" } }

【问题讨论】:

  • 你检查过$query的值是多少吗?
  • 发送print_r( $result ); 看看你从查询中得到了什么。
  • ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 添加到脚本的顶部。这将强制任何mysqli_ 错误生成一个您可以在浏览器上看到的异常,并且其他错误也将在您的浏览器上可见。
  • 告诉我们你从print_r( $aziende );得到什么
  • 拜托!编辑您的问题以添加额外信息

标签: php arrays csv


【解决方案1】:
echo implode(',',$aziende);

生产:

aitech ,Italdata
//    ^-- see this space? this is probably the problem

查询将呈现如下:

$query = "SELECT * FROM azienda  WHERE nome IN ('aitech ','Italdata')";
//     the trailing space will impact matching --------^

你可以使用:

implode("','",array_map('trim',$aziende))

while 循环中的trim() 在存储数据之前进行修剪。

【讨论】:

  • 如果这不能解决问题,请回显$query 并显示您的目标数据库值,以便我们确认您所描述的预期匹配存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 2013-05-15
  • 2017-11-09
  • 2015-10-29
  • 2017-04-21
  • 2022-11-26
  • 2017-11-14
相关资源
最近更新 更多