【问题标题】:Using PHP variables dynamically in MySQL statements在 MySQL 语句中动态使用 PHP 变量
【发布时间】:2015-12-16 16:10:39
【问题描述】:

我正在尝试执行下面的查询。

$condition = "WHERE emp_id = '$emp_id'"; 
$myquery = "SELECT * FROM emp_table".$condition;

我希望我的查询是这样的,但是是动态的:

$myquery = "SELECT * FROM emp_table WHERE emp_id = '$emp_id'";

有没有办法通过php..中的变量动态生成SQL语句?

【问题讨论】:

标签: php mysql sql


【解决方案1】:

应该是

$condition = "WHERE emp_id = '$emp_id'"; 
$myquery = "SELECT * FROM emp_table ".$condition;

你忘了把 $ 放在 myquery 上

【讨论】:

    【解决方案2】:

    你试过吗? -

    $condition = "WHERE emp_id = '" . $emp_id . "'"; 
    $myquery = "SELECT * FROM emp_table " . $condition;
    

    PHP 不会扩展单引号字符串中的变量。

    echo "$name"; //works
    
    echo '$name'; //does not work
    

    看看这个:Single quotes or double quotes for variable concatenation?

    【讨论】:

    • Sterex,我试过了,但还是一样。。无奈:(
    • 你在哪里得到错误?错误是什么?
    • 它不包括 SQL 语句中的变量,我在 $myquery 中得到错误,
    • 嘿@Multi-Coder,虽然我讨厌链接到 W3Schools,但这里有一些东西可以帮助你开始使用 PHP/MySQL(看起来你对这个很陌生):w3schools.com/PHP/php_mysql_select.asp 你可以试试使用他们的语法来准备和执行你的查询?
    • 嗨.. 感谢您的回复.. :) .. 我不是新手,我知道那里都有什么.. 我的问题不同.. 示例:我需要一个查询 =“选择 *从表”..但我拆分为两个变量.. $var1 =“选择*”,$ var2 =“来自查询”。最后,我将查询执行为 $myquery = $var1.$var2; .. 但它不起作用
    【解决方案3】:

    你不应该像那样动态地构建查询。正确的做法是使用prepared statements

    你的情况就是这样

    $statement = $pdo->prepare("SELECT * FROM emp_table WHERE emp_id = :emp_id");
    $statement->execute(array(
        ':emp_id' => $emp_id
    ));
    
    $rows = $statements->fetchAll(PDO::FETCH_ASSOC);
    

    【讨论】:

    • 嗨,elon,我不需要在 WHICH 子句中包含变量。我的要求是,根据输入,WHERE 子句本身将被包含在 r 排除中。例如)如果 emp-id 是空白,则不应包含条件 emp_id = $emp_id
    • 你应该在你的问题中包含这个。
    • 对此很抱歉,但我的例子表明.. 可能你不看
    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多