У меня следующая ошибка:
PDOStatement :: execute (): SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 102 [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQLСервер] Неверный синтаксис рядом с @IdIng.в C: \ Apache24 \ localhost \ Class \ IngredientsManager.php в строке 64
мой связанный метод в классе IngredientsManager.php:
public function deleted(Ingredient $ingredient)
{
$db = parent::dbConnect();
$stmt = $db->prepare("CALL DeleteIngredient( @IdIng=:code)");
$code='['.$ingredient->code().']';
$stmt->bindParam(':code', $code);
$stmt->execute();
}
Я также попытался:
public function deleted(Ingredient $ingredient)
{
$db = parent::dbConnect();
$stmt = $db->prepare("CALL DeleteIngredient(?)");
$code='['.$ingredient->code().']';
$stmt->bindParam(1, $code, PDO::PARAM_STR);
$stmt->execute();
}
мой связанный метод из моего компонента класса:
public function __construct(array $data)
{
$this->hydrate($data);
}
public function hydrate(array $data)
{
$keys = array_keys($data);
if (array_key_exists(0, $keys)) {
$this->setCode($data[$keys[0]]);
$this->setCodealias($keys[0]);
}
if (array_key_exists(1, $keys)) {
$this->setName($data[$keys[1]]);
$this->setNamealias($keys[1]);
}
if (array_key_exists(2, $keys)) {
$this->setSupplier($data[$keys[2]]);
$this->setSupplieralias($keys[2]);
}
if (array_key_exists(2, $keys)) {
$this->setEditdate($data[$keys[3]]);
$this->setEditdatealias($keys[3]);
}
}
связанный код в контроллере:
case "deleteIgr":
require("Class/Ingredient.php");
require("Class/IngredientsManager.php");
$data = array ('code'=> $_POST['code']);
$deleterIngredient = new IngredientsManager;
$deletedIngredient=$deleterIngredient->deleted(new Ingredient($data));
echo 'ok';
Я уточняю, что мой $ _POST ['code'] приходит от AJAX и он в коде значения, когда я делаю цветной журнал, и этозначения проходят, я не знаю, откуда взялась эта синтаксическая ошибка.Я впервые использую хранимую процедуру.