执行“php -r”mysql_connect()不返回链接资源

时间:2017-02-27 21:31:30

标签: php hyperlink identifier mysql-connect

我一直在我的shell脚本中嵌入一些php。像这样的东西有效:

SUBJECT_URL = php -r "echo rawurlencode('$SUBJECT');"

并将我的字符串变量SUBJECT_URL设置为$ SUBJECT的转换值

然而,

我正在尝试使用此命令:

链接= php -r "mysql_connect('localhost', 'root', 'mypassword');"

测试我与SQL数据库的连接。不幸的是,“链接”的值没有设置。因此,我无法测试它是否成功,不能发出:

php -r“mysql_close($ link);”

发布资源。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

这是因为mysql连接死于php。 现在,如果你真的不能只在你输入的地方使用php连接到mysql,你可以使用类似的东西:

php -r "echo @mysql_connect('localhost', 'root', 'mypassword')? 'connected' : 'not connected';"

您不需要释放连接,因为php会在退出时为您执行此操作。

答案 1 :(得分:0)

使用Environment.RData几乎肯定是错误的做法;如果你需要使用PHP,你最好用PHP编写整个脚本,而不是混合使用Shell。

#server.R load("~/srv/shiny-server/Shiny_scRNASeq/R_Environment.RData") load("R_Environment.RData") source('R_Environment.RData', local=TRUE) 无效的原因是(a)R_Environment.RData将资源返回到数据库连接,这不是可以强制转换为字符串的内容,(b)您的单行PHP脚本(public String reverseWordByWord(String strToReverse) { StringBuilder tempBuilder = new StringBuilder(); StringBuilder reversedBuilder = new StringBuilder(); char[] charArray ; for (int i=0; i<=strToReverse.length()-1;i++) { if (strToReverse.charAt(i) != ' ') { tempBuilder.append(strToReverse.charAt(i)); // dont add if space found } if (strToReverse.charAt(i) == ' ' || i == strToReverse.length()-1) { charArray = new String(tempBuilder).toCharArray(); // convert the temp builder to char array (for reversing) for (int j=charArray.length-1; j>=0 ;j--) { reversedBuilder.append(charArray[j]); } if ( i != strToReverse.length()-1) // dont add if it is the last character reversedBuilder.append(strToReverse.charAt(i)); tempBuilder = new StringBuilder(); } } System.out.println("Word by Word : "+new String(reversedBuilder)); return new String(reversedBuilder); } 无论如何都不会php -r该资源,即它甚至不会尝试将资源强制转换为字符串。

link=php -r "mysql_connect('localhost', 'root', 'mypassword');"函数在失败时返回mysql_connect,因此如果您希望mysql_connect('localhost', 'root', 'mypassword');变量指示成功或失败,则可以相应地为其指定字符串。在单行中,ternary operator是一种简单的方法,fab2s noted in his answerecho)。在该代码中,mysql_connect(静默运算符)可防止连接失败从PHP引发警告,如果调用返回了某些内容,则使用三元运算符会有条件地返回false&#34; truthy&#34 ;如果它返回link,则echo @mysql_connect('localhost', 'root', 'mypassword')? 'connected' : 'not connected'

顺便说一句,请注意,你真的不应该再使用旧的MySQL扩展了。事实上,通常最好使用PDO:

@