гиперссылка — выполнение «php -r» mysql_connect () не возвращает ресурс ссылки

Я вставил несколько 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

Решение

Это связано с тем, что mysql соединение умирает с php.
Теперь, если вы действительно не можете просто подключиться к mysql без использования php, откуда вы печатаете, вы можете использовать что-то вроде:

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

Вам не нужно освобождать соединение, так как php сделает это за вас при выходе.

0

Другие решения

С помощью 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]
);
0

По вопросам рекламы [email protected]