Php 在mysql中使用变量作为参数
我已经编写了一个基于id从数据库中获取值的方法 我想在mysql中使用变量id作为参数,但我无法让它工作 这是我的密码:Php 在mysql中使用变量作为参数,php,mysql,parameters,Php,Mysql,Parameters,我已经编写了一个基于id从数据库中获取值的方法 我想在mysql中使用变量id作为参数,但我无法让它工作 这是我的密码: function get_color_by_id($id) { $mysqli = new mysqli("localhost", "root", "usbw", "ipadshop", 3307); if($mysqli->connect_errno){ die("Connection error: " . $
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;
}
}
PHP不是SQL;SQL代码不应该在PHP上下文中工作。因此,过程SQLish语法(set@id:=$id
)在上下文中无效,后面使用的@id
表达式也是如此
如图所示(并针对这个问题进行了更新),在mysqli中使用参数的正确方法是使用prepare、bind_param和execute
$stmt=$mysqli->prepare('SELECT kleur FROM kleur WHERE id=?');
$stmt->bind_参数('i',$id);//假设$id表示一个整数
$result=$stmt->execute();
由于使用引用调用语义,所以一旦绑定,就不应重新分配所使用的变量,以避免潜在的混淆
而且,给列和表指定相同的名称可能会让人混淆;我的首选是对表/关系使用复数名称,并进一步细化列名。考虑选择不同名称的查询;
从kleuren中选择kleurNaam,其中id=?
--还是用英语
从id=?的颜色中选择colorName?
更容易阅读,没有?
设置@id:=$id代码>不是有效的PHP。感谢您的解决方案。我会记住在将来给专栏起不同的名字。