После почти дня исследований я не могу понять, в чем ошибка с моим кодом. Я пытаюсь создать небольшую функцию-прототип, которая возвращает количество строк результатов запроса.
Я получаю ошибку: Uncaught PDOException: SQLSTATE[42000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The multi-part identifier "my@email.com" could not be bound. in C:\inetpub\wwwroot\index.php:59
Строка 59, являющаяся $stmt->execute();
.
Я считаю, что проблема связана с моим SQL-запросом, но я не уверен на 100%.
Способ работы кода заключается в получении значений из входных данных POST, и он проверяет в строке и столбце, содержит ли оно указанное значение в схеме.
Кроме того, я использую MSSQL (не MySQLi) и PHP для этой задачи.
Это основной бит, в котором я хочу, чтобы php-код отправлял SQL-запрос и проверял, существует ли результат.
<?php
include "connect.php";
if(isset($_POST['login']))
{
$email = $_POST['EMAIL'];
$password = $_POST['PASSWORD'];
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM users WHERE EMAIL=$email;");
$stmt->execute();
$count= $stmt->rowCount();
echo "Row count: $count \n";
}
?>
Просто упомяну, что я попробовал все виды изменений в SQL-запросе, например:
$stmt = $conn->prepare("SELECT * FROM users WHERE EMAIL='".$email."';");
и
$stmt = $conn->prepare("SELECT * FROM users WHERE EMAIL=?;");
с входом массива, в котором было $email
.
Все вернули одинаковую ошибку.
Здесь у меня есть connect.php
, на случай, если проблема может возникнуть отсюда.
<?php
$servername = "localhost";
$username = "sa";
$password = "";
try
{
$conn = new PDO("sqlsrv:Server=$servername; Database=db", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected!";
return $conn;
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>