Php 参数值导致错误

Php 参数值导致错误,php,mysql,pdo,Php,Mysql,Pdo,我创建了一个函数来插入与显示数据不同的数据。然后我得到一个错误。“字段列表”中的未知列“$prod\U name”。请告诉我任何正确的建议,因为我是pdo的初学者。谢谢 这是我的密码: <?php function run_db($sqlcom){ $con = new PDO('mysql:host=localhost; dbname=product', 'root', ''); $con->setAttribute(PDO::ATTR_ER

我创建了一个函数来插入与显示数据不同的数据。然后我得到一个错误。“字段列表”中的未知列“$prod\U name”。请告诉我任何正确的建议,因为我是pdo的初学者。谢谢

这是我的密码:

<?php
    function run_db($sqlcom){
        $con = new PDO('mysql:host=localhost; dbname=product', 'root', '');
        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $con->prepare($sqlcom);
        $stmt->execute();
        return $stmt;
    }

    function insertData($sqlcom)
    {
        $con = new PDO('mysql:host=localhost; dbname=product', 'root', '');
        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $con->prepare($sqlcom);
        $stmt->execute();
        return $stmt;
    }



    if(isset($_POST['btn-insert'])){

        $prodname = $_POST['prod_name'];
        $prodsupp = $_POST['prod_supplier'];
        $prodprice = $_POST['prod_price'];

        try{
            $stmt = insertData('INSERT INTO tbl_product(prod_name, prod_supplier, prod_price)VALUES($prodname, $prodsupp, $prodprice)');
        }catch(Exception $e){
            die('error : ' . $e->getMessage());
        }
    }
?>
<html>
    <head><title></title></head>
    <body>
            <table cellpadding="4" cellspacing="2" border='1'>
                <tr>
                    <th>Product ID</th>
                    <th>Product NAME</th>
                    <th>Product SUPPLIER</th>
                    <th>Product PRICE</th>
                </tr>
                <?php $stmt = run_db('SELECT * FROM tbl_product'); while($product = $stmt->fetch(PDO::FETCH_OBJ)) { ?>
                <tr>
                    <td><?php echo $product->prod_id; ?></td>
                    <td><?php echo $product->prod_name; ?></td>
                    <td><?php echo $product->prod_supplier; ?></td>
                    <td><?php echo $product->prod_price; ?></td>
                </tr>
                <?php } ?>
            </table>
            <br>
            <br>

            <form action="" method="post">
                <table cellspacing="2" cellpadding="2" border="1">
                    <tr>
                        <td>Product name:</td>
                        <td><input type="text" name="prod_name"></td>
                    </tr>
                    <tr>
                        <td>Product supplier:</td>
                        <td><input type="text" name="prod_supplier"></td>
                    </tr>
                    <tr>
                        <td>Product Price:</td>
                        <td><input type="text" name="prod_price"></td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="submit" name="btn-insert" value="INSERT"></td>
                    </tr>
                </table>
            </form>

    </body>
</html>

SQL中的字符串文字由单引号表示。如果没有它们,一个空字将被解释为一个对象列(在本例中为名称),当这样一个对象不存在时,查询将失败

要解决此问题,可以用引号括住插入的值:

$stmt = insertData("INSERT INTO tbl_product(prod_name, prod_supplier, prod_price)VALUES('$prodname', '$prodsupp', '$prodprice')");
强制性意见:
在SQL中使用字符串替换是一种糟糕的做法,它会使代码容易受到SQL注入攻击。当我这样做时,我得到了这个错误:ARSE错误:语法错误,意外的“$PRODNAMED”变量在C:\WAM\WWW\DATABASEActudio\NeXX.PHP在线上。28@BluescriptCommunity忘了用双引号替换PHP单引号,我的错。已编辑并修复-请立即尝试。当我尝试将所有单引号更改为双引号时,出现以下错误:!分析错误:语法错误,C:\wamp\www\databasepractice\index.php中的意外“$prodname”T_变量在线28@BluescriptCommunity不是所有的引语-只是周围的两个供将来参考:当你使用所有大写字母对这里的人大喊大叫时,你可能会得到很多反对票。