Curl,post/insert空值

3

有人能告诉我我的脚本哪里出了问题吗?这是我的脚本:

#!/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

请查看我发布时的实际结果(直接插入数据库)。
ID 名称    电子邮件                 电话
1                                    0
2  安妮    anne@example.com       112783
3  安妮2   anne2@example.com      112784
如您所见,在ID为1的位置上,出现了null值。我该如何避免这种情况,以使页面中不会添加任何不必要的null值?感谢您的帮助。谢谢。

1
[$status -eq 200] 将以空值调用 test.php。在 test.php 中,您需要检查 $_SERVER['REQUEST_METHOD'] 是否等于 'POST',如果 $_SERVER['REQUEST_METHOD'] 不等于 'POST',则不插入任何内容。 - anhlc
1
我在理解@anhic的评论时遇到了麻烦,尽管它基本上是正确的。status赋值是第一个PHP调用发生的地方,而不是当您将结果状态与200进行比较的时候。 - tripleee
(1) 我也不理解@anhic的评论。(2) 缺少一个fi。(3) 为什么if-then-elsewhile循环内部?如果status不是200,则输出将只显示“无效链接”行。 - Jdamian
1个回答

0

那么我们只需添加检查,如果$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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接