CC::LuaEngine->executeScriptFile("main.lua") 不执行脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CC::LuaEngine->executeScriptFile("main.lua") 不执行脚本相关的知识,希望对你有一定的参考价值。

参考技术A 遇到这个问题,内心很崩溃,但得知问题所在,就又想抽自己两耳光,太粗心了。

首先分析:

不执行脚本有可能有几种情况:

1、界面卡死,程序没执行到engine->executeScriptFile()这里,程序就停止了。

2、脚本路径问题,你需要查看是否添加了搜索路径,apk包中是否存在脚本文件。

3、脚本问题,程序已经执行了脚本,但是脚本本身有问题,你需要在mian.lua中打印输出,查看是否执行了脚本。

4、在第三种情况下,程序可能已经执行了脚本,但是脚本中的log却始终打印不出来,这就有可能是你没有将cocos原本的lua脚本文件夹(cocos)导入到apk中。

$stmt->execute() : 如何知道数据库插入是不是成功?

【中文标题】$stmt->execute() : 如何知道数据库插入是不是成功?【英文标题】:$stmt->execute() : How to know if db insert was successful?$stmt->execute() : 如何知道数据库插入是否成功? 【发布时间】:2012-04-17 00:36:46 【问题描述】:

通过以下代码,我如何知道数据库中是否插入了任何内容?

if ($stmt = $connection->prepare("insert into table (blah) values (?)")) 
$stmt->bind_param("s", $blah);  
$stmt->execute();           
$stmt->close();                                 

我原以为添加以下行会起作用,但显然不行。

if($stmt->affected_rows==-1)$updateAdded="N"; echo "failed";  

然后使用 $updatedAdded="N" 跳过页面下方依赖于上述插入是否成功的其他代码。

有什么想法吗?

【问题讨论】:

如果没有插入任何内容,affected_rows 不会为 0 吗?尽管如果没有插入任何内容,可能是因为execute 失败了。你试过if ($stmt->affected_rows < 1)吗? 【参考方案1】:

可以查看执行后的返回值:

if ($stmt->execute())  
    // ok :-)
    $count = $stmt->rowCount();
    echo count . ' rows updated properly!';
 else 
    // KO :-(
    print_r($stmt->errorInfo());

【讨论】:

【参考方案2】:

只需检查the manual pages 您正在使用的任何功能:

prepare() - 如果发生错误,则返回一个语句对象或 FALSE。 bind_param() - 返回 TRUE 成功或 FALSE 失败。 execute() - 返回 TRUE 成功或 FALSE 失败。 close() - 成功返回TRUE,失败返回FALSE

但在实践中,这很烦人,而且很容易出错。最好configure mysqli to throw exceptions on error 并摆脱所有特定的错误处理,除了少数预期错误的情况(例如,可能违反唯一约束的试探性插入):

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

【讨论】:

我因为编辑而投了赞成票。每个 mysqli 函数都可能失败,检查它们的返回值是不可行或不明智的。开启mysqli报错才是正确的方式。【参考方案3】:

其他方式:

if ($stmt->error)
        echo "Error";
    
    else
        echo "Ok";
    

【讨论】:

【参考方案4】:

如果您想知道受影响的行数,可以使用rowCount on the pdo statement

$stmt->rowCount();

执行后;

如果您在谈论错误处理,我认为最好的选择是将 errmode 设置为抛出 exteptions 并将所有内容包装在 try/catch 块中

try

    //----

catch(PDOException $e)

    echo $e->getMessage();

【讨论】:

【参考方案5】:

检查$stmt->execute()的返回值

if(!$stmt->execute()) echo $stmt->error;

请注意,这行代码确实执行了 execute() 命令,因此请使用它来代替当前的 $stmt->execute() 而不是在它之后。

【讨论】:

【参考方案6】:

execute() 方法返回一个boolean ...所以就这样做吧:

if ($stmt->execute())  
   // it worked
 else 
   // it didn't

【讨论】:

我试了一下使用这种方法。我用谷歌搜索确定,这让我得到了这个答案。赞成,所以更多的人会在他们的脚本中使用它。 这并不能确保插入发生!只是没有错误。 @user1032531:你是对的。 INSERT ... SELECT 可以插入零行并成功返回。在 OP 查询的情况下...INSERT INTO .. VALUES...我不知道在没有插入行的情况下语句会成功完成的任何情况。 (我可能忽略了一些可能性。) 这样做的问题是,即使更新了零条记录,UPDATE 也会返回 true。 @manse - 感谢您的回复。我找到了答案***.com/a/41077076/2255555 - 服务器人员打开了 STRICT_TRANS_TABLES - 这意味着所有 SQL 字段都必须具有默认值。让服务器人员将其关闭,一切都很好。

以上是关于CC::LuaEngine->executeScriptFile("main.lua") 不执行脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 <execution> 的标头的问题

Doctrine DBAL 2.13 $statement->execute() 返回 bool(而不是 Result)

pdo中query()与prepare().execute()

找不到标头`execution`和`std::reduce`

Symfony2 / Doctrine 使 $statement->execute() 不“缓冲”所有值

Doctrine DBAL ->execute() 和 Hydration,DB2 字段名称包括“#”