所以我看到退出了几个类似的问题,但没有一个解决方案适合我,所以我问这个。
这是代码: -
$sql = "SELECT sifra, IDartikli
FROM {$this->prefix}artikli
WHERE IDartikli = {$artikel_id};";
echo "$sql";
$stmt = $this -> db -> execute($sql);
print_r($stmt);
$table = $stmt->fetch(PDO::FETCH_ASSOC
//$table = $stmt;
// trenutne podatke vstavimo v tabelo artikli_stari
$sql = "INSERT INTO {$this->prefix}artikli_stari
(EAN,
IDartikli)
VALUES('{$table['sifra']}',
'{$table['IDartikli']}');";
$stmt = $this -> db ->prepare($sql);
$stmt->execute();
我在这里收到错误$table = $stmt->fetch()
;
我在phpmyadmin中尝试了sql,它在那里工作正常,函数print_r($stmt);
让我这个
Array
(
[status] => OK
[id] =>
[count] =>
)
我不知道为什么它没有执行。 DB类是必需的,适用于同一文件中的其他查询,如下所示
$row = $stmt->fetch(PDO::FETCH_ASSOC)
他们工作正常。我还尝试了PHP
lint,它在我的代码中找不到错误。
答案 0 :(得分:3)
您误解了execute()
的工作原理:您需要准备一个语句,然后传递一个以占位符值作为参数的数组。你没有传递一个sql字符串。
所以你的第一个查询应该是这样的:
$sql = "SELECT sifra, IDartikli
FROM {$this->prefix}artikli
WHERE IDartikli = :articleId;";
$stmt = $this->db->prepare($sql);
$stmt->execute([':articleId' => $artikel_id]);
如果您的表名来自未知来源,则应根据白名单对其进行检查,因为您无法准备表名。
答案 1 :(得分:0)
- (void)viewDidLoad
{
[super viewDidLoad];
[self.navigationController setToolbarHidden:NO];
UIBarButtonItem* spaceItem1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:self
action:nil];
... create other items ...
self.toolbarItems = @[ item1, spaceItem1, item2, spaceItem2, ... ];
...
}
获取语句标记的值
作为参数。请参阅:PDOStatement::execute。execute()
之前,您必须调用PDOStatement::execute
,并将sql语句作为参数传递。PDO::prepare
之后忘记了它): - )$table = $stmt->fetch(PDO::FETCH_ASSOC