PDO准备的语句如何从ID =值或Tell =值的数据库中选择

问题描述

我想使用学生ID或学生电话从名为“ sms_students”的表中选择一条记录

这是我的代码

    $student_rand_id=$_GET['std_rand'];
    $std_tell=$_GET['std_tell'];

    $view_student = $config->prepare("SELECT * FROM sms_students WHERE st_rand = :random_id || st_tel =: st_tel");
    $view_student->execute(['random_id' => $student_rand_id]); 
    $view_student->execute(['st_tel' => $std_tell]);

    $row = $view_student->fetch();

解决方法

由于您两次调用execute,所以它执行两次,两次都带有一组不完整的参数。不过,这很容易解决:

$view_student = $config->prepare("SELECT * FROM sms_students WHERE st_rand = :random_id OR st_tel = :st_tel");
$view_student->execute(['random_id' => $_GET['std_rand'],'st_tel' => $_GET['std_tell'] ]); 

$row = $view_student->fetch();

尝试摆脱一次性变量,它们几乎总是不必要的,并尽力使名称完全匹配。一起看到st_telstd_tell是一个不正确的迹象。获取您的代码以同意名称并坚持使用。