我一直在我的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);”
发布资源。
任何帮助都将不胜感激。
答案 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 answer(echo
)。在该代码中,mysql_connect
(静默运算符)可防止连接失败从PHP引发警告,如果调用返回了某些内容,则使用三元运算符会有条件地返回false
&#34; truthy&#34 ;如果它返回link
,则echo @mysql_connect('localhost', 'root', 'mypassword')? 'connected' : 'not connected'
。
顺便说一句,请注意,你真的不应该再使用旧的MySQL扩展了。事实上,通常最好使用PDO:
@