简体   繁体   English

无法使用PHP找出程序化MySQL预备语句错误

[英]Cannot Figure out Procedural MySQL Prepared Statement error using PHP

I am new to PHP and MySQL. 我是PHP和MySQL的新手。 My server has version 5.6 of MySQL. 我的服务器具有MySQL 5.6版本。 I am using procedural statements (not PDO, not OO). 我正在使用过程性语句(不是PDO,不是OO)。 This is a PHP page on the site I am developing for users to create a new account. 这是我正在开发的网站上的PHP页面,供用户创建新帐户。 What's weird is that the error message is returned on the actual page itself ( https://mywebsite.com/create_account.php ) instead of in the error log on the server. 奇怪的是,错误消息是在实际页面本身( https://mywebsite.com/create_account.php )上返回的,而不是在服务器上的错误日志中返回的。

* HERE IS THE ERROR MESSAGE I RECEIVE: * *这是我收到的错误消息:*

Error: INSERT INTO users (username, password, name_first, name_last, address_1, address_2, city, state, zip_code, email_address, phone_number, name_on_card, card_number_main, card_number_ccv, card_expire_mo, card_expire_yr) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) You have an error in your SQL syntax; 错误:在用户中插入INSERT INTO用户(用户名,密码,名字_名字,名字_姓氏,地址_1,地址_2,城市,州,邮政编码,电子邮件地址,电话号码,姓名_卡片,card_number_main,card_number_ccv,card_expire_mo,card_expire_yr)VALUES(?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?,? check the manual that corresponds to your MySQL server version for the right syntax to use near '?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' 查看与您的MySQL服务器版本相对应的手册以获取正确的语法以在'?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?附近使用) '

* HERE IS MY CODE THAT GENERATES THE ERROR MESSAGE: * *这是生成错误消息的我的代码:*

//
// Insert data into database
//

$sql = "INSERT INTO users (username, password, name_first, name_last, address_1, address_2, city, state, zip_code, email_address, phone_number, name_on_card, card_number_main, card_number_ccv, card_expire_mo, card_expire_yr) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "ssssssssssssssss", $param_username, $param_password, $param_name_first, $param_name_last, $param_address_1, $param_address_2, $param_city, $param_state, $param_zip_code, $param_email_address, $param_phone_number, $param_name_on_card, $param_card_number_main, $param_card_number_ccv, $param_card_expire_mo, $param_card_expire_yr);
$param_username = $username;
$param_password = $password;
$param_name_first = $name_first;
$param_name_last = $name_last;
$param_address_1 = $address_1;
$param_address_2 = $address_2;
$param_city = $city;
$param_state = $state;
$param_zip_code = $zip_code;
$param_email_address = $email_address;
$param_phone_number = $phone_number;
$param_name_on_card = $name_on_card;
$param_card_number_main = $card_number_main;
$param_card_number_ccv = $card_number_ccv;
$param_card_expire_mo = $card_expire_mo;
$param_card_expire_yr = $card_expire_yr;
mysqli_stmt_execute($stmt);

I have read the manual as the error message suggests but to no avail. 我已阅读该手册,但提示错误消息却无济于事。 Any help would be most appreciated. 非常感激任何的帮助。 Thank you. 谢谢。

Move after variable declaration bind stmt? 变量声明绑定stmt后移动?

<?php

$sql = "INSERT INTO users (username, password, name_first, name_last, address_1, address_2, city, state, zip_code, email_address, phone_number, name_on_card, card_number_main, card_number_ccv, card_expire_mo, card_expire_yr) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($link, $sql);

$param_username = $username;
$param_password = $password;
$param_name_first = $name_first;
$param_name_last = $name_last;
$param_address_1 = $address_1;
$param_address_2 = $address_2;
$param_city = $city;
$param_state = $state;
$param_zip_code = $zip_code;
$param_email_address = $email_address;
$param_phone_number = $phone_number;
$param_name_on_card = $name_on_card;
$param_card_number_main = $card_number_main;
$param_card_number_ccv = $card_number_ccv;
$param_card_expire_mo = $card_expire_mo;
$param_card_expire_yr = $card_expire_yr;


mysqli_stmt_bind_param($stmt, "ssssssssssssssss", $param_username, $param_password, $param_name_first, $param_name_last, $param_address_1, $param_address_2, $param_city, $param_state, $param_zip_code, $param_email_address, $param_phone_number, $param_name_on_card, $param_card_number_main, $param_card_number_ccv, $param_card_expire_mo, $param_card_expire_yr);
mysqli_stmt_execute($stmt);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM