【问题标题】:Curl, post/insert null values卷曲,发布/插入空值
【发布时间】:2015-01-31 12:29:25
【问题描述】:

谁能建议我的脚本有什么问题? 这里是:

#!/bin/sh
url="http://myhost.mydomain/test.php"
status=$(curl -s --head -w %{http_code} "$url" -o /dev/null)
while read LINE
do
#
#some stuffs here
#

if [ $status -eq 200 ]
then
    curl -H "Content-Type:application/json" \
    -XPOST "$url" --data '{"name":"'"$name"'","email":"'"$email"'","phone":"'"$phone"'"}'
else
    echo "Invalid Link."
done < myFile.txt

我发帖时请看实际结果(直接插入db)。

ID 姓名 电子邮件 电话 1 0 2 安妮 anne@example.com 112783 3 Anne2 anne2@example.com 112784

如您所见,它在 ID 1 处发布了 null 值。我怎样才能避免这种情况,其中不会在页面中添加/发布不必要的空值?将不胜感激任何帮助。谢谢。

【问题讨论】:

  • [$status -eq 200] 将以空值调用 test.php。在 test.php 中,您需要检查 $_SERVER['REQUEST_METHOD'] == 'POST' 如果 $_SERVER['REQUEST_METHOD'] != 'POST' 则不插入任何内容
  • 我无法理解@anhic 的评论,尽管它基本上是正确的。 status 赋值是第一次 PHP 调用发生的地方,但是,当您将结果状态与 200 进行比较时。
  • (1) 我也不懂@anhic 的评论。 (2) 缺少fi。 (3) 为什么if-then-elsewhile 循环内?如果 status 不是 200,则输出将只有显示 Invalid link. 的行

标签: bash curl


【解决方案1】:

如果 $name 和 $email 和 $phone 变量都是非空的,那么只添加检查呢?

if [ $status -eq 200 ]
then
    if [ -n "$name$email$phone" ]
    then
        curl -H "Content-Type:application/json" \
        -XPOST "$url" --data '{"name":"'"$name"'","email":"'"$email"'","phone":"'"$phone"'"}'
    else
        echo "Invalid data."
    fi
else

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多