php - 比较两个输入与数据库数据 : error

标签 php mysql

我正在尝试将两个输入值与 MySQL 表中同一行的两个值进行比较。 但我总是收到一条错误消息。这段代码有什么问题? (只需一个输入即可正常工作)

// Check connection
if (mysqli_connect_errno()) {
 echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
}


// escape variables for security

$numero_cedula = mysqli_real_escape_string($con, $_POST['numero_cedula']);
$codigo= mysqli_real_escape_string($con, $_POST['codigo']);


$sql1 = " SELECT Numero Cedula   FROM Teste   WHERE Numero Cedula=$numero_cedula
  AND Chave=$codigo";

$objGet = mysqli_query($con, $sql1);


if( mysqli_num_rows($objGet) > 0 ) {
echo "Duplicate";  
} else {
 echo "Not a duplicate";
}

最佳答案

尽管 SQL 中允许列名中有空格,但这样做的原因(在您的情况下)是因为列名 Numero Cedula 包含一个空格:

                      v -- space                     v -- space
$sql1 = "SELECT Numero Cedula FROM Teste WHERE Numero Cedula=$numero_cedula
  AND Chave=$codigo";

将列名用反引号括起来的同时将其更改为以下内容:

$sql1 = "SELECT `Numero Cedula` FROM Teste WHERE `Numero Cedula`=$numero_cedula
  AND Chave=$codigo";

另外,确保 $numero_cedula$codigo 都是整数,并且您的列也是 int 类型。

如果不是,则两者都需要用引号引起来。

即:

$sql1 = "SELECT `Numero Cedula` FROM Teste WHERE `Numero Cedula`='$numero_cedula'
  AND Chave='$codigo'";

or die(mysqli_error($con)) 添加到 mysqli_query() 中,它将显示 SQL 中的错误。

  • 您还可以使用下划线将数据库中的列重命名为 Numero_Cedula

旁注:

您写道:“只需一个输入即可正常工作”

您需要详细说明这一点,以及您的表格是否包含两个单独的列,例如 Numero Cedula 或一个 Numero塞杜拉


但是,使用此方法受制于SQL injection .使用 prepared statements , 或 PDO with prepared statements .


洞察力:

还要确保您的表单元素已命名。

即:name="numero_cedula"name="codigo"

将错误报告添加到文件顶部,这将有助于查找错误。

error_reporting(E_ALL);
ini_set('display_errors', 1);

旁注:错误报告只应在暂存阶段进行,绝不能用于生产。

关于php - 比较两个输入与数据库数据 : error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435616/

相关文章:

php - Laravel - fatal error : Uncaught Error: Class 'Auth' not found

php - php中如何划分网页?

PHP - 同一数组的 foreach 循环中的 array_push 不会更新数组

mysql - 根据table1中特定列的输入自动添加table2中的行

php - Mysql 分组/排序依据

mysql - 如何使用 CSV 存储引擎配置 MySQL?

php - Laravel 5:无法重新声明 App\Subscription::$fillable

php - 未知修饰符 'g' PHP 正则表达式错误

php - 组合两个 MYSQL 查询以仅获取好友的帖子

MySQL:为具有多个 BETWEEN 表达式的 WHERE 子句建立索引