使用终端中的cURL发布数组

Ale*_*der 5 php database arrays terminal curl

我正在尝试为应用程序构建Web服务,因此数据存储在我拥有的在线数据库中.我目前正在构建PHP文件,我很好奇,我怎么能POST一个array使用cURL终端Mac应用程序.

你看,应用程序将向web服务发送一个由字符串组成的数组.例如像这样的东西["String 1", "String 2", "String 3"].但是为了测试我将用于将这些值插入数据库的代码是否有效,我需要以某种方式将此数据传递给Web服务.到目前为止,我一直在使用Mac终端应用程序并发布这样的curl -F "user_id=1" localhost/test/webservice.php",但我不知道如何传递数组.

到目前为止我所拥有的是:

curl -F "user_id=1" -F "title=Random title 123" -F "num_items=2" -F "items[]=[Item 1, Item 2]" localhost/test/webservice.php
Run Code Online (Sandbox Code Playgroud)

但我不认为这是传递数组的正确方法,因为我相信我的php文档中的代码是正确的,但是存储在我的数据库中的值实际上是单词数组.我认为这items[]是启动它的正确方法,但我不太确定=-sign 之后会发生什么.

有人知道这样做的正确方法吗?

如果这恰好是正确的,那么我在数组中存储数据的方式就出了问题.我正在使用stmt和这样的bind_param()关键字:

$items = $_POST["items"]; // This is the array

$stmt = $this->db->prepare('INSERT INTO items (item_id, user_id, title) VALUES (?, ?, ?)');
$stmt->bind_param('iis', $item_id, $user_id, $items);
$stmt->execute();
$stmt->close();
Run Code Online (Sandbox Code Playgroud)

我想要实现的是基本上使用一个insert语句将数组中的所有值发布到数据库中.如果这是错的,那么正确的方法是什么?

所有帮助表示赞赏!

谢谢.

Sab*_*san 10

首先确保你想做-F(for multipart/form-data)或-d(for application/x-www-form-urlencoded).在任何一种情况下,这是你应该如何传递数组:

-F "items[]=Item 1" -F "items[]=Item 2"
Run Code Online (Sandbox Code Playgroud)

或使用 -d

-d "items[]=Item 1" -d "items[]=Item 2"
Run Code Online (Sandbox Code Playgroud)

您的服务器将按以下格式接收数据:

[items] => Array
    (
        [0] => Item 1
        [1] => Item 2
    )
Run Code Online (Sandbox Code Playgroud)

  • 这也有效: `-d "items[]=Item 1&items[]=Item 2"` (2认同)