Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql中使用变量作为参数_Php_Mysql_Parameters - Fatal编程技术网

Php 在mysql中使用变量作为参数

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: " . $

我已经编写了一个基于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;
        }
    }
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。感谢您的解决方案。我会记住在将来给专栏起不同的名字。