我对整个MySQLi事物都很陌生。我对PHP有基本的了解。无论如何,我在这里搜索过,但是还没有得到一个可靠的答案。
基本上,我有一个人可以输入姓名,电子邮件和促销代码的表格。表单验证了名称和电子邮件,但是当谈到促销代码时,那就是我遇到的问题。
我有一个有两列的数据库。一个用于代码,另一个用于“已使用”列 - 最终我需要能够在使用唯一代码时将“1”写入该列,因此无法再次使用。我正在尝试使用我在这里找到的一些代码,仅供参考。
这是PHP(连接后)到数据库:
if(isset($_POST['sponsorcode']) && !empty($_POST["sponsorcode"])){
$sponsorcode = mysqli_real_escape_string($link,$_POST['sponsorcode']);
$query = "SELECT 'sponsorcode' FROM 'teachercodes' WHERE sponsorcode = '$sponsorcode'";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
$option = "";
if(mysqli_num_rows($result)>0){
while($row=mysqli_fetch_array($result)) {
$option = "<option value='{$row['codes']}'>{$row['codes']}</option>";
}
任何提示都会非常感激!感谢。
答案 0 :(得分:0)
没有理由作为两个单独的步骤执行您的任务。只需标记teachercodes
表中使用的赞助商代码即可。如果更新影响了任何行(即mysqli_affected_rows
返回1或更多),则之前未使用它并且是有效的赞助商代码。像这样:
// Make sure a sponsor code was provided
if (isset($_POST['sponsorcode']) && !empty($_POST['sponsorcode'])) {
// Escape the sponsor code to prevent SQL injection
$code = mysqli_real_escape_string($link, $_POST['sponsorcode']);
// Mark sponsor code as used if possible
$sql = 'UPDATE teachercodes SET used=1 WHERE sponsorcode="' . $code . '"';
mysqli_query($link, $sql) or die(mysqli_error($link));
if (mysqli_affected_rows($link)) {
// Sponsor code hasn't been used before and is valid
}
}