我有一个php页面,你可以输入一个数字,然后点击提交按钮,它应该更新表格中的列。 我遇到的问题是它没有更新值,只是留下一个空字段。
这条线似乎有问题。
$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = $trial");
如果我只是将$ new更改为数字,那么它可以正常工作。如果我回复$ new,我会得到一个数字。 $ trial位工作正常。
我的完整代码如下。
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<link href="/../site.css" rel="stylesheet">
</head>
<body>
<? include("../header.php") ?>
<div id="main">
<?php
session_start();
$trial = $_SESSION['random'];
echo "Random: ".$trial;
if(empty($_SESSION['random'])) {
header("Location:/site/home.php");
}
echo "<br />";
?>
<form action="customer_details.php" method="post">
Number: <input type="number" name="phone" id="phone" maxlength="4" min="1000" max="9999" />
<br /><br />
<input type="Submit" />
</form>
<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db('test' , $link) or die("Unable to select database: asterisk" . mysql_error());
if(isset($_POST['phone']))
{
$phone = $_POST['phone'];
$result = mysql_query("SELECT * FROM table where number = '$phone'");
while ($row = mysql_fetch_array($result))
{
$data = $row['callerid'];
}
echo $phone;
if($phone = $data)
{
print '<script type="text/javascript">';
print 'alert("Number is already in database")';
print '</script>';
}
else {
$new = $phone;
$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = $trial");
if(! $update )
{
die('Could not update data: ' . mysql_error());
}
else
{
print '<script type="text/javascript">';
print 'alert("New Data added");';
print 'window.location.href = "../home.php";';
print '</script>';
}
}
}
?>
<? include("../footer.php") ?>
</div>
</body>
</html>
答案 0 :(得分:1)
您将$phone
设置为$data
,而不是比较它们的值。
if($phone = $data)
{
print '<script type="text/javascript">';
print 'alert("Number is already in database")';
print '</script>';
}
将$phone = $data
更改为$phone == $data
。现在,这个条件块将始终执行,else
(你的更新设置为运行)将不会执行。
旁注:如果其中一个变量的值包含单引号,并且您使用单引号在查询中设置值(应该如此),那么&#39 ; s不仅是一个注射漏洞的问题,而且它只是无法正确更新。
答案 1 :(得分:0)
你应该使用这样的单引号:
$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = '$trial'");
答案 2 :(得分:0)
对于不是整数的变量,必须使用单引号,而不需要对整数使用单引号。
$update = mysql_query("UPDATE sip SET callerid ='".$new."' WHERE name ='".$trial."'");
并更改此行
if($phone = $data) // here you are assigning the value of $data to $phone
到
if($phone == $data) // you have to compare it using ==
答案 3 :(得分:0)
试试此代码
$ update = mysql_query(&#34; UPDATE sip SET callerid =&#39; {$ new}&#39; WHERE name =&#39; {$ trial}&#39;&#34;);