php - 使用表单选项值作为 PHP 变量来执行准备好的 SQL 语句

标签 php mysql variables pdo

我上周刚刚开始使用 PHP,并且一直在广泛地寻找解决方案,但我无法全神贯注于我遇到的答案。

我基本上有一个在index.html中看起来像这样的表单:

<form method="post" action="actionTest.php">
    <select name="courseID">
        <option value = "111">Course 1</option>
        <option value = "222"> Course 2 </option>
        <option value ="333"> Course 3 </option>
    </select>
    <input type="submit" />
</form> 

然后在我的 actionTest.php 文件中准备一个声明

//variable for selected option value?
//$courseSelect = [???]

//query
$sql = "SELECT * FROM courses WHERE course_id = ?";

//prepare the query
$q = $con->prepare($sql);

//execute the statement
$q->execute();

//setting fetch mode for statement
$q->setFetchMode(PDO::FETCH_ASSOC);

//display fetched data
while($r = $q->fetch()){
    echo $r['name'] . "\n";
    echo $r['course_id'] . "\n";
    echo $r['description'] . "\n";
    echo "</br>";
}

我编写了一个简单的 PHP 脚本,它将回显您提交表单时选择的值,因此我知道我可以检索我需要的值。我想我通常对如何将选项值存储在变量中以传递给查询感到困惑。非常感谢任何帮助或引用帮助!

最佳答案

您似乎正在寻找 PDO bindParam()

首先,获取您的发布值。如果没有发布值,此代码将变量设置为 false:

$course_id= isset($_POST['courseID']) ? $_POST['courseID'] : false;

然后准备您的查询:

// query
$sql = "SELECT * FROM courses WHERE course_id = ?";

// prepare query
$q = $con->prepare($sql);

// bind the parameter to the query
$q->bindParam(1,$course_id,PDO::PARAM_INT);

//execute the statement
$q->execute();

//display fetched data
while($r = $q->fetch(PDO::FETCH_ASSOC)){
    echo $r['name'] . "\n";
    echo $r['course_id'] . "\n";
    echo $r['description'] . "\n";
    echo "</br>";
}

或者,在您的上下文中,您可以跳过绑定(bind)并仅使用您的参数执行:

$q->execute(array($course_id));

关于php - 使用表单选项值作为 PHP 变量来执行准备好的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22666933/

相关文章:

JavaScript 循环每 30 秒调用一个不同的函数

PHP/Laravel - 共享关系的独特结果

c++ - 如何正确初始化全局变量?

php - Laravel Eloquent 类变量文档

php - 无法将参数默认值设置为全局变量?

php没有使用jquery发送数据

php - MySQL 触发器 : updating column depending of a submitted value

Mysql:使用正则表达式匹配作为字段?

Mysql,创建外键失败

mysql - 如何在 phpmyadmin 中创建触发器