小编ces*_*los的帖子

尝试/捕获mysqli

我正在学习OOP mysqli课程。连接到数据库时,他们使用以下脚本:

$db = new mysqli("host", "user", "password", "database");
if ($db->connect_error){
    $error = $db->connect_error;
    echo("Not connected: " . $error);
}
Run Code Online (Sandbox Code Playgroud)

不过,稍后,他们使用try / catch块调用数据库连接文件:

try {
    require_once "connection.php";
}catch (Exception $e){
    $error = $e->getMessage();
    echo $error;
}
Run Code Online (Sandbox Code Playgroud)

尝试连接后,连接文件不是立即处理了可能的连接错误吗?try / catch块基本上在做同样的事情吗?还是try / catch块正在寻找其他类型的错误?

更新:为了澄清,在阅读了一些答案之后。当我这样做时:

try {
    $db = new mysqli("host", "user", "password", "database");
}catch (Exception $e){
    $error = $e->getMessage();
    echo $error;
}
Run Code Online (Sandbox Code Playgroud)

假设数据库访问数据是错误的(例如错误的主机),我会收到PHP警告,但catch块中不会输出错误。捕获是否应该检测到此错误?

php mysqli try-catch

5
推荐指数
2
解决办法
1万
查看次数

创建应用程序按钮不会生成应用程序,卡在微调器上

我正在尝试创建一个REST应用程序,但是当我转到"我的应用程序"并单击"创建应用程序"按钮时,我会得到一个微调器和"我们将对您正确的消息",它就像那样.我离开了,10分钟后回来,它仍然显示动画.有没有人有类似的问题?系统创建应用需要多长时间?有什么办法可以解决这个问题吗?

paypal

5
推荐指数
1
解决办法
67
查看次数

ios - 用视频播放器动态替换图像

我的应用程序(Swift 3,带有UIStoryboard)显示了一个节目的剧集列表。每当用户单击表格中的剧集时,他/她都会获得一个详细信息视图,其中显示(从上到下):

  • 剧集的图像
  • 标题
  • 情节描述和技术信息

根据用户类型,我们希望有一个视频播放器,而不是显示剧集的图像,这样订阅的人就可以开始观看视频(未订阅的用户只能看到图像)。

根据我们用户的订阅状态,视频播放器应该播放内容(订阅)或显示图像(取消订阅)。

有没有办法动态删除图像并将其替换为完全相同的位置和尺寸的视频播放器?如果是这样,当前应用于图像的自动布局约束会发生什么?

ios swift

5
推荐指数
1
解决办法
4966
查看次数

使用 Swift 4 消除 iOS 中的所有模式

我正在尝试实现类似于 iOS 版 Netflix 应用程序的导航。当您单击电影时,会弹出一个带有关闭按钮的模式窗口。如果在这部电影中我选择观看另一部电影,则会弹出第二个模式,除了关闭按钮之外,还会出现后退按钮。我可以使用后退按钮一一关闭,并使用关闭按钮返回到基本屏幕。

我可以使用消除单个视图

dismiss(animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

但我怎样才能返回到基本屏幕并立即关闭所有模式呢?另外,模态是要走的路吗?我选择这个是因为我不希望导航栏位于顶部。

我正在 Xcode 10 中使用 Swift 4.2。

modalviewcontroller ios swift

5
推荐指数
1
解决办法
3661
查看次数

从应用程序内打开 Apple 的订阅窗口

有没有办法通过单击应用程序内的按钮来打开 iPhone 的订阅管理窗口?

我知道您可以使用以下命令打开应用程序的设置页面

UIApplication.openSettingsURLString
Run Code Online (Sandbox Code Playgroud)

是否有类似访问订阅模块以管理应用内订阅的功能?

swift in-app-subscription

4
推荐指数
1
解决办法
1142
查看次数

在PHP中创建一个字母表,只有一些字母取决于数据库中的名称

我有一个包含很多名称的数据库(SQL),我想创建按字母顺序排列的按钮,因此很容易导航.我已经找到了很多关于如何在PHP中创建字母表的例子.但是,我想根据数据库中的名称构建一个只有有效字母的字母.

例如:

数据库列表:Anderson,Beresford,Donovan,Emerson,Graham ....

我希望字母表显示为:ABDEG ...

(请注意,C和F不会出现).

我能想到的唯一方法是

- 选择数据库中的每个名字,按顺序排序-loop逐个,查找第一个字符是什么,将其保存到数组,-loop到第二个字符,获取第一个字符,看它是否已存在于数组,如果它确实忽略它 - 直到我留下一个只有重复字母的数组.

这是唯一的方法吗?或者我错过了一个更简单的解决方案?

提前致谢.

php mysql alphabet

3
推荐指数
1
解决办法
426
查看次数

Android - Fragment 内 BillingClient 的上下文

我有一个活动应用程序(java),其中一个片段包含订阅按钮。我正在设置 Google Play 结算库,但是当我设置以下内容时:

private BillingClient billingClient = BillingClient.newBuilder(getActivity())
        .setListener(purchasesUpdatedListener)
        .enablePendingPurchases()
        .build();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

java.lang.IllegalArgumentException: Please provide a valid Context.
at com.android.billingclient.api.BillingClient$Builder.build
Run Code Online (Sandbox Code Playgroud)

我也尝试过

getContext()
Run Code Online (Sandbox Code Playgroud)

getActivity.getApplicationContext() 
Run Code Online (Sandbox Code Playgroud)

但也没有用。requireContext() 也没有。

如果我在片段内,我应该传递什么上下文?

更新:

订阅片段由 SignUpFragemnt 调用:

public class SignUpFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.fragment_sign_up, container, false);

    Button nextButton = v.findViewById(R.id.nextButton);
    nextButton.setOnClickListener(v1 -> {
        Navigation.findNavController(v1).navigate(R.id.subscriptionV3Fragment);
    });

    return v;
}
}
Run Code Online (Sandbox Code Playgroud)

这是订阅片段:

public class SubscriptionV3Fragment extends Fragment implements View.OnClickListener {

    private static final String …
Run Code Online (Sandbox Code Playgroud)

android in-app-billing play-billing-library billingclient

2
推荐指数
1
解决办法
1307
查看次数

Android - 更新计费库产品的 SkuDetailsResponse 按钮

我正在设置一个与 Google Play 结算库配合使用的界面。我使用querySkuDetailsAsync查询订阅产品,然后循环浏览返回的产品,以便启用购买按钮。

这是我正在使用的脚本

billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
        @Override
        public void onSkuDetailsResponse(@NonNull BillingResult billingResult, @Nullable List<SkuDetails> list) {
            
            if (!list.isEmpty()) {
                for (int i = 0; i < list.size(); i++) {
                    
                    if (list.get(i).getSku().equals("core_monthly")) {
                        monthlyDetails = list.get(i);
                        

                    } else if (list.get(i).getSku().equals("core_annual")) {
                        annualDetails = list.get(i);
                        
                    }
                }

                monthlySubscribe.setEnabled(true);
                annualSubscribe.setEnabled(true);
                monthlySubscribe.setText("Monthly Subscription");
                annualSubscribe.setText("Annual Subscription");

            } else {
                Toast.makeText(getActivity(), "There was a problem getting available plans", Toast.LENGTH_SHORT);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

问题是 setText() 按钮文本永远不会更新。收到产品后如何更新按钮名称并启用它们?

android play-billing-library

0
推荐指数
1
解决办法
500
查看次数