Я вставил несколько php в мои скрипты оболочки. Вещи, как это работает:
SUBJECT_URL =php -r "echo rawurlencode('$SUBJECT');"
и устанавливает мою строковую переменную SUBJECT_URL в преобразованное значение $ SUBJECT
Тем не мение,
Я пытаюсь использовать эту команду:
ссылка =php -r "mysql_connect('localhost', 'root', 'mypassword');"
Чтобы проверить мое соединение с базой данных SQL. К сожалению, значение «ссылка» не устанавливается. Поэтому я не могу проверить это на успех и не могу выдать:
php -r «mysql_close ($ link);»
выпустить ресурс.
Любая помощь будет оценена.
Это связано с тем, что mysql соединение умирает с php.
Теперь, если вы действительно не можете просто подключиться к mysql без использования php, откуда вы печатаете, вы можете использовать что-то вроде:
php -r "echo @mysql_connect('localhost', 'root', 'mypassword')? 'connected' : 'not connected';"
Вам не нужно освобождать соединение, так как php сделает это за вас при выходе.
С помощью php -r
почти наверняка неправильный подход; если вам нужно использовать PHP, вам лучше написать весь сценарий на PHP, а не смесь Shell.
Причины link=php -r "mysql_connect('localhost', 'root', 'mypassword');"
не работает, что (а) mysql_connect
возвращает ресурс для соединения с базой данных, который не может быть приведен в строку, и (б) ваш однострочный PHP-скрипт (mysql_connect('localhost', 'root', 'mypassword');
не echo
этот ресурс в любом случае, то есть он даже не пытается преобразовать ресурс в строку.
mysql_connect
функция возвращает false
на провал, так что если вы хотите, чтобы ваш link
переменная для обозначения успеха или неудачи, вы можете назначить ей строку соответственно. В одной строке троичный оператор это простой способ сделать это, так как fab2s отметил в своем ответе (echo @mysql_connect('localhost', 'root', 'mypassword')? 'connected' : 'not connected'
). В этом коде @
(оператор молчания) предотвращает возникновение предупреждения из PHP при неудачном соединении, а использование тернарного оператора возвращает условно "connected"
если звонок вернул что-то «правдивое» и "not connected"
если он вернулся false
,
Кроме того, обратите внимание, что вы действительно не должны больше использовать старое расширение MySQL. На самом деле лучше всего использовать PDO:
<?php
$dbConn = new \PDO(
'mysql:dbname=my_db;host=localhost;charset=utf8',
'user',
'password',
[PDO::ATTR_ERRMODE => PDO::ERR_EXCEPTION]
);