【问题标题】:PHP retrieval from database on single stringPHP 从数据库中检索单个字符串
【发布时间】:2023-03-31 18:14:01
【问题描述】:

我正在使用这些代码行从 SQL 数据库中检索数据

$username = $_POST['username'];
$selector = "SELECT * FROM client_table WHERE SalesmanID ='" . $username . "';";
$result = mysqli_query($con,$selector);

while($row = mysqli_fetch_array($result)) {
    echo  $row['ID'] . "/" . $row['Name'] .  "/" . $row['Address'] .  "/" . $row['Zip Code'] .  "/" . $row['SalesmanID'];
    echo "\\r\\n";
}
?>

在 Java 方面我做

while ((bufferedStrChunk = bufferedReader.readLine()) != null) {
    stringBuilder.append(bufferedStrChunk);
}

String queryResult = stringBuilder.toString();

问题是当我这样做时

String[] results=queryResult.split("\n");

字符串没有被分割。有人可以帮忙吗?

【问题讨论】:

    标签: java php sql regex stringbuilder


    【解决方案1】:

    当您从 bufferedReader 检索数据时,您没有向 stringBuilder 添加任何行分隔符

    stringBuilder.append(bufferedStrChunk).append(System.lineSeparator())
    

    无论如何,如果您想获取某种集合中的所有行,那么您可以简单地使用

    List<String> lines = Files.readAllLines(Paths.get("pathToFile"));
    

    如果是 BufferedReader,您也可以使用(从 Java 8 开始)

    List<String> lines = br.lines().collect(Collectors.toList());
    

    【讨论】:

    • 如果您使用System.lineSeparator(),则必须切换到更通用的正则表达式,例如"\r?\n|\r" 或(自Java 8 起)"\\R"。而且真的没有抵消的好处;请参阅我对this queston 的回答。我会在两个地方都使用"\n"。但是,正如您所说,最好绕过字符串构造并将行直接保存到列表中,如果这是您真正想要的。
    • @AlanMoore 感谢有关 Java 8 中 \R 的信息,我不知道这一点。无论如何lineSeparator 只是一个例子,OP 可以使用他想要的任何分隔符,如果在 Java 8 之前的 split 的情况下,我们可以简单地使用 text.split(System.lineSeparator)(假设 text 是由我们的应用程序或在我们的应用程序之前生成的)操作系统)。是的,我添加了其他变体来表明我们不需要自己处理拆分部分(我们可以让适当的方法为我们做这件事)。
    【解决方案2】:

    在 PHP 代码中,您使用 \\ 转义到 \,这使得字符串附加 \-char 后跟 n-character AND 在 Java 代码中,您将被新拆分行字符\n。这可能会导致问题。

    用转义的\试试:

    String[] results=queryResult.split("\\\\n");
    //EDITED: String[] results=queryResult.split("\\n"); //In comment informed that; to escape '\' we need to use four '\\\\'
    

    应该可以的。

    【讨论】:

    • split("\\n")split("\n") 相同。如果要在\ 后跟n 字符上拆分,则需要将其写为split("\\\\n"),因为此方法使用正则表达式,因此您需要对\ 进行两次转义:一次在字符串中,一次在正则表达式引擎中。
    • @Pshemo:好的...因为我是 PHP 程序员,这里的意思是在 java 中转义 ``。我正在编辑我的答案。
    猜你喜欢
    • 2017-10-10
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多