当前位置: 首页 > 知识库问答 >
问题:

无法更改mysqli错误

尚嘉庆
2023-03-14

我创建了一个表格,插入拳头的名字,姓氏和电话,但我有这个错误,不能弄清楚它在哪里

can't execute query.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

这是我的php代码第一个名为displayPhone的文件。php

<!DOCTYPE html>
<html>
<?php
$labels=array("first_name"=>"First Name",
                "last_name"=>"Last Name",
                "phone"=>"Phone");
?>
<body>
<h3>please enter your phone number below</h3>
<form action='savePhone.php' method='POST'>
<?php
//loop that displays the form field
foreach($labels as $field =>$value)
{
    echo "$field <input type='text' name='$field' size='65' maxlenghth='65'/>";
}
echo "<input type='submit' value='submit phone number'/>";
?>

第二个文件名为savePhone。php

<?php
$labels=array("first_name"=>"First Name",
                "last_name"=>"Last Name",
                "phone"=>"Phone");
?>
<body>
<?php
foreach($_POST as $field =>$value)
{
    if(empty($value))
    {
        $blank_array[]=$field;
    }
    elseif(preg_match("/name/i",$field))
    {
        if(!preg_match("/^[A-Za-z' -]{1,50}$/",$value))
        {
            $bad_format[]=$field;
        }
    }
    elseif($field=="phone")
    {
        if(!preg_match("/^[0-9)( -]{7,20}(([xX]|(ext)|(ex))?[ -]?[0-9]{1,7})?$/",$value))
        {
            $bad_format[]=$field;
        }
    }
}

if(@sizeof($blank_array)>0 or  @sizeof($bad_format)>0)
{
    if(@sizeof($blank_array)>0)
    {
        echo "<p>input";
        foreach($blank_array as $value)
        {
        echo "$labels[$value]";
        }
        echo "</p>";
    }

    if(@sizeof($bad_format)>0)
    {
        echo "<p>invalid format";
        foreach($bad_format as $value)
        {
            echo $labels[$value];
        }
        echo "</p>";
    }

//redisplay form
    echo "<hr/>";
    echo "enter phone number";
    echo "<form action='$_SERVER[PHP_SELF]' method='POST'>";

    foreach($labels as $field =>$label)
    {
        $good_data[$field]=strip_tags(trim($_POST[$field]));
        echo "$label <input type='text' name='$field' size='65' maxlength='65' value='$good_data[$field]'/>";   
    }
    echo "<input type='submit' value='submit phone number'/>";
exit();
}
else
{
    $user='root';
    $host='localhost';
    $password='root';
    $dbname='pet';
    $cxn=mysqli_connect($host,$user,$password,$dbname) or die("can't connect to server");
    foreach($labels as $field =>$value)
    {
        $good_data[$field]=strip_tags(trim($_POST[$field]));
            if($field=="phone")
            {
                $good_data[$field]=preg_replace("/[)( .-]/","",$good_data[$field]);
            }
        $good_data[$field]=mysqli_real_escape_string($cxn,$good_data[$field]);
    }
    $query="INSERT INTO data (";
    foreach($good_data as $field =>$value)
    {
        $query.="$field,";
    }
    $query.= ") VALUES (";
    $query=preg_replace("/,\)/",")",$query);
    $result=mysqli_query($cxn,$query) or die ("can't execute query.".mysqli_error($cxn));
    echo "<h4>member inserted </h4>";

}
?>
</body>

我的库名'宠物'表名'数据'。该表包含3部分first_name,last_name和电话都是varchar类型

共有2个答案

景书
2023-03-14

您没有在值(之后插入任何内容。这是一个MySQL语法错误,因此无法执行查询。

正确的语法是。

="INSERT INTO数据(column_names)值(corresponding_values)";

郗丰
2023-03-14

在查询中,永远不要把任何东西放在VALUES()之后。尝试这种将字段名和值放入查询的方法

$fields = implode(',', array_keys($good_data));
$values = implode(',', array_map(function($x) { return "'$x'"; }, $good_data));
$query = "INSERT INTO data ($fields) VALUES ($values)";
 类似资料:
  • 问题内容: 警告:mysqli :: query():无法在第43行上的C:\ Program Files(x86)\ EasyPHP- DevServer-13.1VC9 \ data \ localweb \ my Portable files \ class_EventCalendar.php中获取mysqli 以下是我的连接文件: 这是我的课: 我对OOP PHP不太满意,而且不确定为什么

  • 我正在尝试将自动增量添加到人员表的主键。但是,当我运行命令时,出现以下错误。 错误1833(HY000):无法更改列“person_id”:用于表“bank.favorite_food”的外键约束“fk_fav_food_person_id” ,以执行以下命令。我正在使用 MySQL 5.7.20

  • 问题内容: 根据以下我用于常规mysql的代码,如何将其转换为使用mysqli? 像更改为一样简单吗? 问题答案: 首先要做的可能是将每个函数调用都替换为等效函数,至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于MySQL API的代码,这将是更简单的方法是一种程序性的。 为了解决这个问题,“ MySQLi扩展功能摘要” 绝对是有用的。 例如: 将被替换 将被替换为和/或,具体取决于上

  • 我正在尝试注册DBMS更改通知,但我遇到了一个错误,即必须声明DBMS\u Change\u通知。 下面是我的SQL代码: 执行后,我得到以下错误: DBMS_CHANGE_NOTIFICATION. DEREGISTER(注册);第9行出错: ORA-06550:第9行,第13列:PLS-00201:必须声明标识符“DBMS\u CHANGE\u NOTIFICATION” ORA-06550:

  • 我试图更改IntelliJ中的Java版本为。所以我去了 ,它仍然显示17,我如何将其更改为1.8,这可能最终修复我的错误?

  • 问题内容: 这是一个非常基本的问题,但是我正在尝试使用以下方法更改node.js / Express应用程序的图标 而且我仍在使用默认图标。这是在我的功能,是的,我已经验证,有 是 一个在。还有的约没有在控制台中,要么,我相信这线索,这行代码被忽略。函数中的其他所有内容(设置端口,设置视图目录,设置模板引擎等)似乎都正常,那么为什么这行代码无法执行? 我尝试了什么 清空浏览器缓存 重新启动终端并再