Мне нужно сделать вызов PHP PDO для моей базы данных с помощью предложений INNER JOIN и WHERE.
В графическом интерфейсе Navicat этот оператор работает нормально, и я могу видеть результаты.Проблема всплыла в среде php по поводу конкатенации строк.
Я хотел бы отформатировать этот запрос так, чтобы он мог быть переварен php:
SELECT * FROM tsourcetb as T INNER JOIN users as U ON U.username = T.username WHERE U.username = $username AND T.username = $username;
, что я пытался сделать
$sth = $db->prepare("SELECT * FROM tsourcetb as T INNER JOIN users as U ON U.username = T.username WHERE U.username = $username AND T.username = $username");
возврат - ошибкачто указывает на отсутствие таблицы с именем переменной.По сути, она принимает переменную в качестве имени таблицы, возвращаемое значение - ошибка, указывающая, что нет таблицы с именем переменной.По сути, она принимает переменную в качестве имени таблицы, а не имя таблицы, как должно (SELECT * FROM $ username), выпрыгивая из первой части оператора).
Намерение состоит в том, чтобы иметь все записи таблицыA, где поле имени пользователя = = поле имени пользователя таблицы B со значением, переданным из переменной.Спасибо за любое предложение для достижения моей цели.
ОБНОВЛЕНИЕ
php - это магия, которую нужно попробовать и переобучить.В конце вы помогаете мне достичь цели:
$username = ($_POST['username']);
$password = ($_POST['password']);
$statement = $db->prepare('SELECT p.* FROM `tsourcetb` as p LEFT JOIN `users`as s ON p.username = s.username WHERE s.username = :username;');
$statement->bindParam(':username', $username, PDO::PARAM_STR);
$statement->execute();
/ * посмотрите здесь -> $ Statement-> fetchall (PDO :: FETCH_ASSOC) * /
$array_select = $statement->fetchall(PDO::FETCH_ASSOC);
echo json_encode($array_select, JSON_PRETTY_PRINT);