我编写了一种方法,可以根据id从数据库中获取值。
我想在mysql中使用变量id作为参数,但我无法使其工作。
这是我的代码:
function get_color_by_id($id) {
$mysqli = new mysqli("localhost", "root", "usbw", "ipadshop", 3307);
if($mysqli->connect_errno){
die("Connection error: " . $mysqli->connect_error);
}
set @id := $id;
$result = $mysqli->query('SELECT kleur FROM kleur WHERE id=',@id);
if(!$result){
die('Query error: ' . $mysqli->error);
}
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
return $row;
}
}
答案 0 :(得分:0)
PHP 不是 SQL;并且不应期望SQL代码在PHP上下文中工作。因此,过程SQLish语法(set @id := $id
)在上下文中无效,后面使用的@id
表达式也是如此。
如图所示here(并针对此问题进行了更新),在mysqli中使用参数的正确方法是使用prepare,bind_param和execute。
$stmt = $mysqli->prepare('SELECT kleur FROM kleur WHERE id = ?');
$stmt->bind_param('i', $id); // assuming $id represents an integer
$result = $stmt->execute();
由于bind_param
使用引用调用语义,因此使用的变量应该在绑定后重新分配 not 以避免混淆。
此外,为列和表赋予相同的名称可能会令人困惑;我的偏好是为表/关系使用复数名称,并更多地细化列名。考虑选择不同名称的查询;
SELECT kleurNaam FROM kleuren WHERE id = ?
-- or in English
SELECT colorName FROM colors WHERE id = ?
易于阅读,不是吗?