SQLSTATE [42S22]:未找到列:1054未知列'其中'条款

时间:2015-08-27 12:41:49

标签: php mysql

我已经在这里检查了其他问题并尝试了我所看到的一切,但无法解决我的问题。

详情如上;

main.js // ajax查询部分

$("#register").submit(function (event, request) {
    var password = $(this).find('input[name="objPassword"]').val();
    var namesurname = $(this).find('input[name="objNameSurname"]').val();
    var email = $(this).find('input[name="objEmail"]').val();
    var gsm = $(this).find('input[name="objGsm"]').val();
    var adres = $(this).find('input[name="objAddress"]').val();
    var termsOk = $(this).find('input[name="objAcceptTerms"]').val();
    var formURL = $(this).attr("action");

    var postMessage;
    if (postMessage) {
        postMessage.abort();
    }

    var postData = {
        "objPass": password,
        "objNameSurname": namesurname,
        "objEmail": email,
        "objGsm": parseInt(gsm),
        "objAdres": adres,
        "objTerms": termsOk
    };

    // console.log(postData);
    // alert(password);

    postMessage = $.post(formURL, postData, function (data) {
        console.log("Data: " + data);
    });

...

register.php

$conn = new PDO('mysql:host=localhost;dbname=db_trop@Dubai;charset=utf8','root','mysql');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

if (isset($_POST)) {

// CHECK IF PASSWORD ALREADY IN USE
$objP = clear(strtoupper($_POST['objPass'])); // Get Ajax Data

$stmt = $conn->prepare('SELECT Id,PassNumber FROM tblRecords WHERE PassNumber = '.$objP.'');
$stmt->execute();
$PassResult = $stsmt->fetchAll;
// (PDO::FETCH_ASSOC)

if($PassResult) {
$data = array('FAIL' => 'GIRILEN SIFRE DAHA ONCE KULLANILMIS', 'postData : ' => $_POST);
echo json_encode($data);

} else {
$data = array('SUCCESS' => 'SIFRE BOSTA', 'postData' => $_POST);
echo json_encode($data);

MySQL table details like :

Error i got

MySQL表格详细信息如下: 错误I' VE GOT 我的 tblRecords 中有 1 记录。

我的目标网页上有一个表单。第一个输入称为 objPassword ,它必须比较 tblRecords 表的 PassNumber 列中的值。

问题是它表示我的输入值不存在于我的表中。它是一个输入值。另一个是表格的一列。

如何使用这些代码比较输入和列之间的值?

2 个答案:

答案 0 :(得分:1)

$objP13123ASD,表示PassNumber = '.$objP.'PassNumber = 13123ASD,而13123ASD未被引用,因此被视为列名称。你需要引用它:

'SELECT Id,PassNumber FROM tblRecords WHERE PassNumber = "'.$objP.'"'

虽然理想情况下你应该绑定参数。

答案 1 :(得分:0)

使用bindParam而不是将值替换为查询。然后,您不必担心引用和转义该值。

$stmt = $conn->prepare('SELECT Id,PassNumber FROM tblRecords WHERE PassNumber = :passnum');
$stmt->bindParam(':passnum', $objP);
$stmt->execute();
$PassResult = $stmt->fetchAll();