PHP PDOException: SQLSTATE[HY093]
PHP PDOException: SQLSTATE[HY093]
我的查询:
$query = 'INSERT INTO ptd_users (username,contact,email,longitude,latitude,state,city,address) values (?,?,?,?,?,?,?,?)';
$q = $conn->prepare($query);
$q->execute($_POST['user']);
print_r($_POST[user])
的结果:
Array ( [name] => marc [contact] => 123456789 [email] => marc@gmail.com [longitude] => 12.3786085 [latitude] => 96.6126145 [state_select] => Arizona [city_select] => sussex [address] => address details )
我在执行查询时遇到以下错误:
PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
您只将 1 个参数绑定到 8 个占位符,因此这是行不通的。现在你有 3 种方法来解决这个问题:
1。访问单个数组元素并像这样绑定它们:
$q->execute($_POST['user']['name'], $_POST['user']['contact'], $_POST['user']['email'], $_POST['user']['longitude'], $_POST['user']['latitude'], $_POST['user']['state_select'], $_POST['user']['city_select'], $_POST['user']['address'] );
2。使用具有这样名称的占位符:
$query = "INSERT INTO ptd_users (username,contact,email,longitude,latitude,state,city,address) values (:name, :contact, :email, :longitude, :latitude, :state_select, :city_select, :address)";
然后你可以像这样使用你的关联数组:
$q->execute($_POST['user']);
3。像这样使用位置占位符:
$query = 'INSERT INTO ptd_users (username,contact,email,longitude,latitude,state,city,address) values (?,?,?,?,?,?,?,?)';
然后您可以将关联数组更改为数字数组,如下所示:
$q->execute(array_values($_POST['user']));
我的查询:
$query = 'INSERT INTO ptd_users (username,contact,email,longitude,latitude,state,city,address) values (?,?,?,?,?,?,?,?)';
$q = $conn->prepare($query);
$q->execute($_POST['user']);
print_r($_POST[user])
的结果:
Array ( [name] => marc [contact] => 123456789 [email] => marc@gmail.com [longitude] => 12.3786085 [latitude] => 96.6126145 [state_select] => Arizona [city_select] => sussex [address] => address details )
我在执行查询时遇到以下错误:
PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
您只将 1 个参数绑定到 8 个占位符,因此这是行不通的。现在你有 3 种方法来解决这个问题:
1。访问单个数组元素并像这样绑定它们:
$q->execute($_POST['user']['name'], $_POST['user']['contact'], $_POST['user']['email'], $_POST['user']['longitude'], $_POST['user']['latitude'], $_POST['user']['state_select'], $_POST['user']['city_select'], $_POST['user']['address'] );
2。使用具有这样名称的占位符:
$query = "INSERT INTO ptd_users (username,contact,email,longitude,latitude,state,city,address) values (:name, :contact, :email, :longitude, :latitude, :state_select, :city_select, :address)";
然后你可以像这样使用你的关联数组:
$q->execute($_POST['user']);
3。像这样使用位置占位符:
$query = 'INSERT INTO ptd_users (username,contact,email,longitude,latitude,state,city,address) values (?,?,?,?,?,?,?,?)';
然后您可以将关联数组更改为数字数组,如下所示:
$q->execute(array_values($_POST['user']));