使用php时发生sql更新错误


sql update error using php

我一直在获取

服务器错误网站在检索时遇到错误https://www.website.com/update.php?FName=asdd&电话=4444444444。它可能已停机进行维护或配置不正确。

<?php
    $FName = $_POST['FName'];
    $LName = $_POST['LName'];
    $PHON = $_POST['PHON'];
    //connect
    $dbh=mysql_connect ("localhost", "username", "password") or die ('ERROR!');
    mysql_select_db ("user_Client"); 
    $query = "INSERT INTO ClientTable (ID, FName, LName, PHON) VALUES 
                ('NULL','".$FName."','".$LName."','".$PHON."')";
    mysql_query($query) or die ('Error updating Daatabase');
    echo "Database Update with:" .$FName. " " .$LName. " " .$PHON. ;
?>

我不知道这里出了什么问题。我听从了这里的指示http://teamtutorials.com/web-development-tutorials/php-tutorials/inserting-data-into-a-mysql-database-using-php#.UEiSQY3iajk如果有帮助的话,我正在使用Josthost的cPanel。

这是表格:

<html>
        <head>
                <title></title>
        </head>
        <body>
                <form method="post" action="update.php">
                        First Name:<br/>
                        <input type="text" name="FName" size="30" /><br/>
                        Last Name:<br/>
                        <input type="text" name="LName" size="30" /><br/>
                        Phone:<br/>
                        <input type="text" name="PHON" size="12" /><br/>
                        <input type="submit" value="Update Database"/>
                </form>
        </body>
</html>

请使用PDO,因为mysql_*函数已弃用。。

对于您的问题,您使用了$_GET而不是$_POST,而且您拼错了变量($FNLame):

$db = new PDO('mysql:host=localhost;dbname=user_Client;charset=UTF-8', 'username', 'password', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$FName = $_GET['FName'];
$LName = $_GET['LName'];
$PHON = $_GET['PHON'];
$stmt = $db->prepare("INSERT INTO `ClientTable`(ID, FName, LName, PHON) VALUES (0,:FName,:LName,:PHON)");
$stmt->execute(array(':FName' => $FName, ':LName' => $LName, ':PHON' => $PHON));
echo "Database Update with:" .$FName. " " .$LName. " " .$PHON;

您的最后一句话是错误的:

echo "Database Update with:" .$FName. " " .$LName. " " .$PHON. ;

应该是(没有最后一个点):

echo "Database Update with:" .$FName. " " .$LName. " " .$PHON ;

如果您查看Web服务器的错误日志,您将能够看到错误。另一个想法可能是在php.iniini_set("display_errors", 1);中打开PHP中的错误。确保你只在你的开发系统上这样做。

您正在检查$_POST['PHON'],而在Query字符串中您正在传递

https://www.website.com/update.php?FName=asdd&电话=4444444444.

请先更正PHONE。然后检查

像一样

$_GET['PHONE']

$_REQUEST['PHONE']

可能是由于引号引起的sql错误('")。为了避免这种情况,你可以使用类似的东西

    $FName = mysql_real_escape_string($_POST['FName']);
    $FNLame = mysql_real_escape_string($_POST['FLame']);
    $PHON = $_POST['PHON'];

您的用户名和密码正确吗?大多数localhost的默认值是root,没有密码