2016-01-28 2 views
1

Я просто обновляю базу данных с номером, но я хочу, чтобы последняя цифра номера действительно обновлялась. Я не уверен, делать это в PHP или MySql.Обновление mysql, но только последняя цифра числа

Код: (не полный код размещен, но отношение)

if(isset($_POST['update'])) { 

$N_Score = $_POST['N_Score']; 
$A_Score = $_POST['A_Score']; 

$sql = "UPDATE scores SET N_Score = $N_Score, A_Score = $A_Score"; 
mysql_query($sql) or die(mysql_error()); 

<form method = "post" action = "<?php $_PHP_SELF ?>"> 
<table width = "400" border =" 0" cellspacing = "1" cellpadding = "2"> 

<tr> 
<td width = "10"><?php echo $N_Team; ?> Score:</td> 
<td><input name = "N_Score" type = "text" id = "N_Score" value="<?php echo $N_Score; ?>"></td> 
</tr> 

<tr> 
<td width = "10"><?php echo $A_Team; ?> Score:</td> 
<td><input name = "A_Score" type = "text" id = "A_Score" value="<?php echo $A_Score; ?>"></td> 
</tr> 

Таким образом, в форме, я вхожу в оценку N_Team и A_Team так:

N_Team: 21 & A_Team: 34

Я хочу, чтобы последняя цифра действительно включалась в обновление строки sql, поэтому в базе данных это выглядело бы так:

N_Team: 1 & A_Team: 4

+1

Так вы эффективно пытаются установить счет на [ 'значение% 10'] (http://php.net/manual/en/internals2.opcodes. mod.php)? –

+0

Я так не думаю, нет. –

+0

Почему бы и нет? В соответствии с вашим примером, '21% 10 = 1' и' 34% 10 = 4'. –

ответ

4

Try:

$N_Score = substr($_POST['N_Score'], -1); 
$A_Score = substr($_POST['A_Score'], -1); 

Это предполагает, что значения отличны от нуля длины, вы можете некоторые обработки ошибок.

Вы также можете подумать о защите себя от SQL-инъекций.

+0

Ах, отлично. Я знал, что это просто. Это просто эксперимент, а не публичный. Благодаря! –

2

Это вернет последний символ строки.

$N_Score = substr($_POST['N_Score'], -1); 
$A_Score = substr($_POST['A_Score'], -1); 

Возможно, вы могли бы защитить целостность системы, убегая на ввод данных пользователем:

$N_Score = mysql_real_escape_string(substr($_POST['N_Score'], -1)); 
$A_Score = mysql_real_escape_string(substr($_POST['A_Score'], -1)); 

Вы также можете перейти от mysql_* к mysqli_*, что улучшается и лучше использовать.

Помните, что если размер строки равен 0, тогда код выдает ошибку для «no value at position -1» или что-то в этом роде.

Так что вам лучше проверить, содержит ли строка что-то перед добавлением в базу данных.

Что-то вроде:

if ($_POST['N_Score'] != "" and $_POST['A_Score'] != "") 
{ 
    $N_Score = mysql_real_escape_string(substr($_POST['N_Score'], -1)); 
    $A_Score = mysql_real_escape_string(substr($_POST['A_Score'], -1)); 
} 
+0

Спасибо. Просто принимаю ответ Оробото, потому что он был первым. –

+0

Все в порядке, рад помочь – Phiter

2
if(isset($_POST['update'])) { 

$N_Score = substr($_POST['N_Score'], -1); 
$A_Score = substr($_POST['A_Score'], -1); 

$sql = "UPDATE scores SET N_Score = $N_Score, A_Score = $A_Score"; 
mysql_query($sql) or die(mysql_error()); 

<form method = "post" action = "<?php $_PHP_SELF ?>"> 
<table width = "400" border =" 0" cellspacing = "1" cellpadding = "2"> 

<tr> 
    <td width = "10"><?php echo $N_Team; ?> Score:</td> 
    <td><input name = "N_Score" type = "text" id = "N_Score" value="<?php echo $N_Score; ?>"></td> 
</tr> 

<tr> 
    <td width = "10"><?php echo $A_Team; ?> Score:</td> 
    <td><input name = "A_Score" type = "text" id = "A_Score" value="<?php echo $A_Score; ?>"></td> 
</tr> 
Смежные вопросы